我可以通过使用自动布局和4.7(iPhone 6)和(iPhone 6 plus)的故事板来实现具体和不同的约束
例如,我希望图标有4像素的50像素,而4.7和#34的60像素;和#66;#66; iphone。?
答案 0 :(得分:1)
您好,您有两种方式:
将图标的宽度与屏幕宽度相关联。实际上,如果您希望屏幕为4英寸50px
时图标的宽度为320px
,则乘数为50.0/320.0 = 0.15625
:
NSLayoutConstraint *constraint = [NSLayoutConstraint
constraintWithItem:iconImageView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:attribute:NSLayoutAttributeWidth
multiplier:0.15625
constant:0];
[self.view addConstraint:constraint];
显然也在proportional width/height
上设置约束iconImageView
。
按此比例,iPhone 6+上的图标宽度(以及高度)将导致414*0.15625 = 64.6875
;
第二种方式只是IBOutlet
到iconImageView
的固定宽度约束,并从检查屏幕宽度的代码中改变它:
if ([UIScreen mainScreen].bounds.size.width == 320.0) {
myConstraintsWidth.constant = 50.0;
} .... and so on
此处显然还在proportional width/height
上设置约束iconImageView
。
IMO我非常喜欢第一种选择。它很干净,效果很好。
干杯!
答案 1 :(得分:0)
如果您询问是否可以仅使用Storyboard设置约束,我恐怕答案是否定的,这意味着您必须实现一些代码。
示例:请注意这是硬编码而不是优雅,只是向您展示精神
#define SCREEN_WIDTH MIN([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height)
- (void)setImageWidthConstraint:(NSLayoutConstraint *)imageWidthConstraint {
if (SCREEN_WIDTH == 320) { //iPhone 5s or earlier
imageWidthConstraint.constant = 50;
} else if (SCREEN_WIDTH == 375) { //iPhone 6
imageWidthConstraint.constant = 60;
} else if (SCREEN_WIDTH == 414) { //iPhone 6 Plus
imageWidthConstraint.constant = 66;
}
}