![](/img/trans.png)
[英]Xcode 7 - Code completion not working with CGRectMake while initializing UIView/UILabel/UIButton in Swift
[英]UIButton initWithFrame:CGRectMake not working in Xcode 9.3
将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 在此处输入图像描述
我怎样才能解决这个问题?
您可以将图片大小调整为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,那么一切都会很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.