我正在尝试根据设备是 iPhone 5(高屏幕)还是更早的 iPhone 版本(较短屏幕)来调整 UIImageView 的大小。下面是我的代码。但是,当我运行该应用程序时,这些说明将被忽略。我怀疑问题是由自动布局约束引起的。如果我关闭这些约束,图像会调整大小,但这会弄乱我其余的布局。无论如何有选择地覆盖自动布局而不是将其关闭?
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
// code for 4-inch screen
avatarImage.frame = CGRectMake(43, 372, 75, 75);
} else {
// code for 3.5-inch screen
avatarImage.frame = CGRectMake(43, 372, 50, 50);
}
编辑
下面是我试图解决的问题的图片。我希望头像图像按比例调整大小,直到它适合较小的 View 。我想以编程方式将文本字段向上移动到标签的右侧。
最佳答案
执行此操作的一种方法是以编程方式更改您的约束。您可以通过以下方式执行此操作:
通过选择 ImageView 为您的 ImageView 创建高度和宽度约束,然后在 Xcode 5 中单击 按钮:
或者,在早期版本的 Xcode 中,通过单击 按钮:
确保更改其他次要约束工作以允许调整 ImageView 的大小。例如,如果您在此缩略图的右侧有一个标签,您希望确保它已设置为标签的宽度会随着图像大小的变化而调整。最重要的是,您要确保在应用程序运行时没有约束冲突,因为如果您确实有一些冲突,您可能会收到一条调试消息,说明必须打破约束才能使应用程序运行,或者更糟的是,约束不可满足。
为新的高度和宽度约束创建
IBOutlet
引用。最简单的方法是显示助理编辑器(以便在操作 Storyboard时显示关联的 .h 文件),然后 control- 从约束拖动到 .h 文件:然后在您的代码中,您可以更改您的约束:
CGRect screenBounds = [[UIScreen mainScreen] bounds]; if (screenBounds.size.height >= 568) { self.widthConstraint.constant = 75; self.heightConstraint.constant = 75; } else { self.widthConstraint.constant = 50; self.heightConstraint.constant = 50; }
关于iphone - 是否可以有选择地覆盖 Interface Builder 中的布局约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14175960/