Ios Xcode 6自动布局灵活宽度

Ios Xcode 6自动布局灵活宽度,ios,autolayout,xcode6,Ios,Autolayout,Xcode6,我有一个UITextField,它使用Xcode 6s自动布局界面,我已经设置为400点的宽度。这在大屏幕设备上看起来不错,但在iphone5s上,这些盒子从包含它们的视图中消失了。正确的方法是什么 是否有方法设置一个约束,如果屏幕大于此值,则使UITextFields宽度为400点,或者如果屏幕不大于此值,则仅填充容器视图,不要在视图外溢出,或者应该使用大小类将UITextField设置为与压缩视图上的父视图具有相同的宽度。不要在UITextField上设置宽度约束,而是在其左右两侧添加水平空

我有一个UITextField,它使用Xcode 6s自动布局界面,我已经设置为400点的宽度。这在大屏幕设备上看起来不错,但在iphone5s上,这些盒子从包含它们的视图中消失了。正确的方法是什么


是否有方法设置一个约束,如果屏幕大于此值,则使UITextFields宽度为400点,或者如果屏幕不大于此值,则仅填充容器视图,不要在视图外溢出,或者应该使用大小类将UITextField设置为与压缩视图上的父视图具有相同的宽度。

不要在UITextField上设置宽度约束,而是在其左右两侧添加水平空间约束。这样,UITextField将随着屏幕自动调整大小。

正如Kris所说,设置水平空间限制是开始解决此问题的一个好方法

针对您关于不需要固定“边距”的评论,您可以执行以下操作:

  • 在Interface Builder中设置水平空间约束
  • 在类中创建类型为
    NSLayoutConstraint
    IBOutlet
    s(可以是.h或.m;这不重要)
  • IBOutlet
    s连接到相应的
    NSLayoutConstraint
    s
  • 在视图生命周期方法之一(
    viewDidLoad
    /
    视图将出现:
    )中,设置所需值的约束 听起来您主要是想防止字段在iPad上跨越全屏,所以您可以这样做(假设
    NSLayoutConstraint
    s被命名为“textFieldLeft”,而
    UITextField
    被命名为“textField”的字段被命名为“textFieldRight”):


    我唯一的问题是,对于像ipad这样的大屏幕设备,我不希望文本视图占据整个屏幕,因为它看起来很傻。苹果公司推荐的方法是为iphone和ipad提供不同的故事板/XIB。它们的代码将被完全共享。@KrisJurgowski看起来苹果公司想让我们使用每种大小的不同实现的组合故事板文件。我还不确定我是否喜欢这种工具/方法,但它似乎是未来的潮流。不过,我希望它们能让区分设备/屏幕变得更容易。现在,区分iPhone和iPad相当容易,但区分iphone4s和iphone6plus却令人困惑(至少在纵向模式下)。现在,我同意你们关于独立故事板的看法,但我认为这种方式不会支持太久。它很有效,谢谢,我想知道,为什么需要添加水平空间限制?我认为左右约束就足够了。
    - (void)viewDidLoad {
        if (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) {
            self.textFieldLeft.constant = 50.0f;
            self.textFieldRight.constant = 50.0f;
            [self.textField layoutIfNeeded];
        }
    }