我刚刚创建了一个按钮,将它水平和垂直居中并固定了它的高度。
当我在模拟器中运行程序并比较 iphone 6+ 和 iphone 6 的高度时,6 的按钮高度明显小于 6+。没关系。
但是在4s模拟器中,button的高度和iphone 6中的高度是一样的。有人可以解释为什么会这样吗? 4s 的屏幕高度比 6s 小,但按钮的高度保持不变。
这个事实对我构建一个与所有 iphone 设备兼容的漂亮用户界面造成了很多问题。我总是遇到这种问题,我需要一个对象,例如按钮在 4 秒内变小。当我把它变小时,它对于 6 或 6 plus 来说太小了
谢谢
最佳答案
如果您有固定的高度限制,则按钮在所有设备上都将具有相同的高度。您可以做的是为您的高度限制制作一个 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
的大小使您的按钮变小或变大。我假设该按钮已添加到根据设备屏幕大小调整大小的 View (如 UIViewController
中的 Root View )。您可能需要调整计算以适合您的设计。
如您所见,我创建了一个自定义 UIButton
类来处理这个可调整的高度。要使其正常工作,您需要将 storyboard
中的 UIButton
的类设置为该自定义类。当然,您可以直接在 View Controller 中添加代码,这样就不需要自定义按钮类了。
另一种选择是不使用固定高度,而是使用 aspect ratio
约束将按钮的高度连接到其他东西。由于我真的不知道您的界面是如何工作的,因此我无法真正为您提供这种情况的具体示例。
希望这有助于解决您的问题。
关于ios 自动布局自动调整大小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29100080/