UIButton initWithFrame:CGRectMake 在 Xcode 9.3 中不工作
UIButton initWithFrame:CGRectMake not working in Xcode 9.3
将 xcode 更新到 9.3,我的可编程按钮有问题
in 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];
屏幕Xcode8
enter image description here
按钮的图像 "settings.png" 高度为 25,宽度为 25,显示效果很好。
但是当我激活 xcode 9 时没有使用 initWithFrame: CGRectMake 并且它变得更大。 "按钮图片的大小
屏幕Xcode9.3
enter image description here
我该如何解决这个问题?
您可以将图片调整为25x25
或
只需为图片设置内容模式
[[btnSettingsButton imageView] setContentMode: UIViewContentModeScaleAspectFit];
[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
添加条形按钮项目是否有问题:-
UIBarButtonItem *settingsButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"settings.png"] style:UIBarButtonItemStyleDone target:self action:@selector(setttingsDashboard:)];
通过放置解决
[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
btnSettingsButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
btnSettingsButton.contentEdgeInsets = UIEdgeInsetsMake(10, 0, 10, -20);
当您调用 initWithCustomView
时,您正在制作一个自定义栏按钮项目。
在 iOS 10 及之前,它有一个固定大小(如您正确观察到的那样,基于 frame)。
但在 iOS 11 中,此行为完全改变:iOS 11 使用 自动布局 获取自定义栏按钮项目的大小.
因此,您需要提供决定自定义视图大小的内部自动布局约束(例如高度和宽度约束)。如果你给你的按钮一个 25 的高度限制和 25 的宽度限制,一切都会好起来的。
将 xcode 更新到 9.3,我的可编程按钮有问题
in 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];
屏幕Xcode8 enter image description here
按钮的图像 "settings.png" 高度为 25,宽度为 25,显示效果很好。
但是当我激活 xcode 9 时没有使用 initWithFrame: CGRectMake 并且它变得更大。 "按钮图片的大小
屏幕Xcode9.3 enter image description here
我该如何解决这个问题?
您可以将图片调整为25x25
或
只需为图片设置内容模式
[[btnSettingsButton imageView] setContentMode: UIViewContentModeScaleAspectFit];
[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
添加条形按钮项目是否有问题:-
UIBarButtonItem *settingsButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"settings.png"] style:UIBarButtonItemStyleDone target:self action:@selector(setttingsDashboard:)];
通过放置解决
[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
btnSettingsButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
btnSettingsButton.contentEdgeInsets = UIEdgeInsetsMake(10, 0, 10, -20);
当您调用 initWithCustomView
时,您正在制作一个自定义栏按钮项目。
在 iOS 10 及之前,它有一个固定大小(如您正确观察到的那样,基于 frame)。
但在 iOS 11 中,此行为完全改变:iOS 11 使用 自动布局 获取自定义栏按钮项目的大小.
因此,您需要提供决定自定义视图大小的内部自动布局约束(例如高度和宽度约束)。如果你给你的按钮一个 25 的高度限制和 25 的宽度限制,一切都会好起来的。