1

将 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];

屏幕 Xcode 8 在此处输入图像描述

按钮的图像“settings.png”以 25 的高度和 25 的宽度很好地显示了我。

但是当我开始使用 xcode 9 时,它并没有采用 initWithFrame: CGRectMake 并且它变得更大。"按钮图像的大小

屏幕 Xcode 9.3 在此处输入图像描述

我怎样才能解决这个问题?

4

4 回答 4

0

当你打电话时initWithCustomView,你正在制作一个自定义栏按钮项目。

  • 在 iOS 10 及之前的版本中,它有一个固定的大小(如你所见,基于frame)。

  • 但是在 iOS 11 中,这种行为完全改变了:iOS 11 使用自动布局来获取自定义栏按钮项的大小。

因此,您需要提供内部自动布局约束(例如高度和宽度约束)来决定自定义视图的大小。如果您给按钮设置 25 的高度约束和 25 的宽度约束,一切都会好起来的。

于 2018-05-24T17:24:25.787 回答
0

通过放置解决它

[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
btnSettingsButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
btnSettingsButton.contentEdgeInsets = UIEdgeInsetsMake(10, 0, 10, -20); 
于 2018-05-24T16:40:45.943 回答
0

您可以将图像大小调整为25x25

或者

只需为图像设置内容模式

[[btnSettingsButton imageView] setContentMode: UIViewContentModeScaleAspectFit];
[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
于 2018-05-23T20:53:06.983 回答
0

添加条形按钮项目是否有问题,例如:-

UIBarButtonItem *settingsButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"settings.png"] style:UIBarButtonItemStyleDone target:self action:@selector(setttingsDashboard:)];
于 2018-05-24T05:20:12.777 回答