URLImage.createMaskAdapter()/Image.createMask() не работает на iOS с масками среднего размераIOS

Программируем под IOS
Anonymous
URLImage.createMaskAdapter()/Image.createMask() не работает на iOS с масками среднего размера

Сообщение Anonymous »

Я наблюдаю недавнюю регрессию в Codename One на iOS.
Проблема возникает при создании адаптера маски с помощью URLImage.createMaskAdapter(). Один и тот же код корректно работает в симуляторе Codename One и на устройствах Android. Несколько дней назад он также работал на iOS.
Сначала я подумал, что это может быть связано с недавними изменениями UIScene, но после сужения круга я не думаю, что UIScene здесь задействован.
Этот код работает на iOS:

Код: Выделить всё

Image roundMask = Image.createImage(100, 100, 0xff000000);
Graphics g = roundMask.getGraphics();
g.setColor(0xffffff);
g.fillRoundRect(0, 0, 100, 100, 60, 60);

URLImage.ImageAdapter ada = URLImage.createMaskAdapter(roundMask);
Это также работает на iOS:

Код: Выделить всё

Image roundMask = Image.createImage(100, 150, 0xff000000);
Graphics g = roundMask.getGraphics();
g.setColor(0xffffff);
g.fillRoundRect(0, 0, 100, 150, 60, 60);

URLImage.ImageAdapter ada = URLImage.createMaskAdapter(roundMask);
Однако на реальном устройстве iOS это не работает:

Код: Выделить всё

Image roundMask = Image.createImage(410, 410, 0xff000000);
Graphics g = roundMask.getGraphics();
g.setColor(0xffffff);
g.fillRoundRect(0, 0, 410, 410, 60, 60);

URLImage.ImageAdapter ada = URLImage.createMaskAdapter(roundMask);
Это тоже не работает:

Код: Выделить всё

Image roundMask = Image.createImage(410, 614, 0xff000000);
Graphics g = roundMask.getGraphics();
g.setColor(0xffffff);
g.fillRoundRect(0, 0, 410, 614, 60, 60);

URLImage.ImageAdapter ada = URLImage.createMaskAdapter(roundMask);
Исключением является:

Код: Выделить всё

[EDT] 0:0:0,963 - Exception: java.lang.RuntimeException - null
java.lang.RuntimeException
at com_codename1_ui_Image.createMask:1090
at com_codename1_ui_URLImage.createMaskAdapter:231
Поэтому проблема, похоже, связана с Image.createMask()/URLImage.createMaskAdapter() в iOS, когда маска имеет умеренно большие размеры. Размер 410 x 410 не кажется особенно большим, и до недавнего времени это работало на iOS.

Вернуться в «IOS»