ios 自动布局自动调整大小不起作用

标签 ios autolayout

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

当我在模拟器中运行程序并比较 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/

相关文章:

ios - 带有 adjustsFontSizeToFitWidth 的多行 UILabel

ios - 将 plist 加载到我的 TableView 中后,如何将信息传递给第二个 View Controller ? (NS词典)

mysql - 如何将图像从 Drupal 字段加载到 UIImageView?

ios - iPhone SDK 网络连接检测

ios - UITableViewCell 中的自动布局 UILabel

ios - 使用 Swift 更新动画中的约束

ios7 - [MyClass layoutSublayersOfLayer :] 中的断言失败

android - Android 和 iOS 的 Spring Boot 休息安全性

ios - 您真的可以将约束链接到完全不同的 View Controller 吗?

通话时 iOS 状态栏高度不正确