Различные названия происхождения UIButton с изображением внутри в разных версиях iOS - PullRequest
1 голос
/ 23 октября 2019
  • Я создал кнопку в конструкторе интерфейсов.
  • Установите фиксированные ограничения ширины = 120 и высоты = 40 для этой кнопки.
  • После добавления изображения к кнопке и установки изображенияВставки (вверху: 10, слева: 0, внизу: 10, справа: 100) для перемещения изображения влево.

Скриншот вставок UIButton

Проблема: В разных версиях iOS (в моем случае это: 10.3.1, 12.1 и 13.1) кнопка рисует по-разному. Название заголовка кнопки (x = 29,5, y = 11) для iOS 13.1 и (x = 44, y = 11) для более старой iOS.

Снимок экрана имитатора

Как сделать так, чтобы кнопки выглядели одинаково во всех версиях iOS?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Мое исследование выявило возможную причину такого различного рисунка кнопок. И причина в старом кадре imageView. После добавления вставок изображения для перемещения изображения влево / вправо рамка изображения изменяется. Я не знаю, как именно Apple рассчитывает происхождение заголовка кнопки. В более старом iOS название origin.x равно старому frame.width изображения. В iOS 13 происхождение заголовка меняется, как я и ожидал.

Поэтому я решил изменить размер UIImage, прежде чем поместить его в UIImageView. И это работает очень хорошо.

Спасибо всем, кто дал совет.

0 голосов
/ 24 октября 2019

Я знаю, что ты пытаешься сделать, и просто не знаю. это раздавит вас, пытаясь сделать это так, как вы думаете, это должно сработать. вместо этого сделайте это

  1. сделайте вашу кнопку, как вы делали выше
  2. , добавьте UIImageView к кнопке, чтобы UIimageView был добавлен как подпредставление для UIButton
  3. addограничения на UIImageView, так что представление изображения находится в самой левой части кнопки

, это то, как вы работаете с iOS, чтобы заставить вещи работать, которые должны работать, но не работают, и безнуждающийся в создании подкласса UIButton и выполнении некоторой сумасшедшей математики геометрии с ее собственным внутренним представлением изображения.

...