UIButton initWithFrame: CGRectMake не работает в Xcode 9.3 - PullRequest
0 голосов
/ 23 мая 2018

обновить xcode до 9.3, и у меня возникли проблемы с программируемой кнопкой

в Xcode 8 У меня это следующим образом, и он работает хорошо

UIButton *btnSettingsButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[btnSettingsButton setBackgroundImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
[btnSettingsButton addTarget:self action:@selector(setttingsDashboard:) forControlEvents:UIControlEventTouchUpInside];
[btnSettingsButton setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *btnSettingsItem =[[UIBarButtonItem alloc] initWithCustomView:btnSettingsButton];

screen Xcode8 введите описание изображения здесь

изображение кнопки "settings.png" хорошо показывает мне высоту 25 и ширину 25.

, нокогда я обращаюсь к xcode 9, он не берет initWithFrame: CGRectMake, и он выходит намного больше.Размер кнопки изображения

Экран Xcode 9,3 введите описание изображения здесь

Как это исправить?

Ответы [ 4 ]

0 голосов
/ 24 мая 2018

Когда вы звоните initWithCustomView, вы создаете пользовательский элемент панели кнопок.

  • В iOS 10 и более ранних версиях она имела фиксированный размер (на основе, как вы правильно заметили,на frame ).

  • Но в iOS 11 это поведение полностью меняется: iOS 11 использует auto layout для получения кнопки пользовательской панелиразмер элемента.

Поэтому вам необходимо указать внутренние ограничения автоматического размещения (например, ограничения по высоте и ширине), которые определяют размер пользовательского представления.Если вы дадите кнопке ограничение высоты 25 и ширину 25, все будет хорошо.

0 голосов
/ 24 мая 2018

Есть ли проблема при добавлении элемента кнопки панели, например: -

UIBarButtonItem *settingsButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"settings.png"] style:UIBarButtonItemStyleDone target:self action:@selector(setttingsDashboard:)];
0 голосов
/ 24 мая 2018

решить, разместив

[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
btnSettingsButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
btnSettingsButton.contentEdgeInsets = UIEdgeInsetsMake(10, 0, 10, -20); 
0 голосов
/ 23 мая 2018

Вы можете изменить размер изображения на 25x25

или

, просто установите режим содержимого для изображения

[[btnSettingsButton imageView] setContentMode: UIViewContentModeScaleAspectFit];
[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
...