ios autolayout autoresizing不起作用

时间:2015-03-17 13:15:51

标签: ios autolayout

我刚刚创建了一个水平和垂直居中的按钮,并固定了它的高度。

当我在模拟器中运行程序并比较iphone 6+和iphone 6的高度时,按钮的高度显着小于6,而不是6+。没关系。

然而在4s模拟器中,按钮的高度与iphone 6中的高度相同。有人可以解释为什么会这样吗? 4s的屏幕高度小于6的高度,但按钮的高度保持不变。

这个事实给我带来了很多问题,我可以构建一个漂亮的用户界面,以便与所有iphone设备兼容。我一直有这样的问题,我需要一个对象,例如按钮在4s内小。当我把它变小时,它太小了6或6加

谢谢

1 个答案:

答案 0 :(得分:1)

如果您有固定的高度限制,则按钮在所有设备上的高度都相同。您可以做的是为您的身高限制制作IBOutlet,并将其在代码中更改为每个屏幕尺寸所需的尺寸。

@interface MyResizingButton ()

@property (nonatomic, weak) IBOutlet NSLayoutConstraint *heightConstraint;

@end

@implementation IMScrollViewFillingView

- (void)layoutSubviews {
    [self.heightConstraint setConstant:0.3*CGRectGetHeight(self.superview.frame)];
    [super layoutSubviews];
}

@end

上面的代码会使您的按钮变小或变大,具体取决于superview的大小。我假设按钮被添加到视图中,该视图根据设备屏幕大小调整大小(如UIViewController中的根视图)。您可能需要调整计算以适合您的设计。

如您所见,我创建了一个自定义UIButton类来处理此可调高度。要使其正常工作,您需要将UIButtonstoryboard的类设置为此自定义类。当然,您可以直接在视图控制器中添加代码,然后就不需要自定义按钮类了。

另一个选择是不使用固定高度,而是使用aspect ratio约束将按钮的高度连接到其他高度。由于我真的不知道你的界面是如何工作的,所以我真的不能给你一个具体的例子。

希望这有助于解决您的问题。