我有一个UITextField,它使用Xcode 6s自动布局接口,我已设置为400点的宽度。这在大屏幕设备上看起来很好,但在iPhone 5s上,这些框从包含视图中消失。什么是正确的方法来解决这个问题?Xcode 6自动布局灵活宽度
有没有一种方法来设置一个约束,如果屏幕比这个大,将使UITextFields的宽度为400点,或者只是填充容器视图如果不是,而不是在视图外部溢出,或者我应该使用大小用于设置UITextField在紧凑视图上与其父视图具有相同宽度的类。
我有一个UITextField,它使用Xcode 6s自动布局接口,我已设置为400点的宽度。这在大屏幕设备上看起来很好,但在iPhone 5s上,这些框从包含视图中消失。什么是正确的方法来解决这个问题?Xcode 6自动布局灵活宽度
有没有一种方法来设置一个约束,如果屏幕比这个大,将使UITextFields的宽度为400点,或者只是填充容器视图如果不是,而不是在视图外部溢出,或者我应该使用大小用于设置UITextField在紧凑视图上与其父视图具有相同宽度的类。
而不是在UITextField上设置宽度约束,将水平空间约束添加到它的左侧和右侧。这样,UITextField将自动调整屏幕大小。
就像Kris说的那样,设置水平空间约束是开始处理这个问题的好方法。
在回答你关于不想常量“利润”的评论,你可以做到以下几点:
IBOutlet
s类型NSLayoutConstraint
(无论是.h还是.m;无关紧要)。IBOutlet
连接到各自的NSLayoutConstraint
s。viewDidLoad
/viewWillAppear:
)中,将约束设置为所需的值。这听起来像你主要是想防止跨越整个屏幕在iPad领域,所以你可以做这样的事情(假设NSLayoutConstraint
s的名为“textFieldLeft”和“textFieldRight”名为UITextField
“文本字段“):
- (void)viewDidLoad {
if (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) {
self.textFieldLeft.constant = 50.0f;
self.textFieldRight.constant = 50.0f;
[self.textField layoutIfNeeded];
}
}
我唯一的问题是,像iPad这样的大屏幕设备我不希望文本视图占用整个屏幕,因为它看起来很傻。 – 2014-10-28 17:51:30
苹果推荐的方法是为iphone和ipad制作不同的storyboard/xibs。他们的代码将被完全共享。 – 2014-10-28 17:52:44
@KrisJurgowski看起来Apple似乎希望将每个尺寸类别的Storyboard文件与不同的实现结合起来。我不确定我是否还在意这种工具/方法,但似乎是未来的潮流。不过,我希望他们能够更轻松地区分设备/屏幕。目前,将iPhone与iPad区分开来相当容易,但将iPhone 4S与iPhone 6 Plus区分开来会造成混淆(至少在肖像模式下)。现在,我与您分开介绍Storyboard,但我认为这不会被支持的时间更长。 – mbm29414 2014-10-28 17:59:23