【问题标题】:Using Auto Layout with Dynamic UITextView, UIImageView, and UILabel Heights使用动态 UITextView、UIImageView 和 UILabel 高度的自动布局
【发布时间】:2014-01-11 05:11:40
【问题描述】:

我正在尝试创建一个视图,其中包含一个带有 2 个标签和文本视图的图像视图。每个元素的内容将从 SQLite 数据库中读取,因此我想使用 Xcode 5 的自动布局根据每个元素的内容更改每个 UI 元素的高度和它们之间的距离,以有效地使用屏幕空间尽可能。我有一些条件试图通过界面构建​​器中的自动布局来强制执行,但我不确定如何实现它们:

  • 标签与其正下方的文本视图之间的距离将保持不变
  • 所有元素的宽度将保持不变,它们都将水平居中
  • 只有元素框架的高度和 y 值会改变
  • 如果文本视图的内容高度超过了它们可以显示的屏幕高度,则图像视图的高度应降低到最小值,然后文本视图的高度应降低
  • 每个元素之间的距离应该相等(不包括关联标签和文本视图之间的距离)

我将能够以编程方式完成所有这些操作,但我想使用自动布局,以便视图可以轻松适应屏幕尺寸的变化并防止出现错误。我对自动布局的经验很少,而且在这种情况下我需要复杂的规范。为了使我打算创建的内容更清晰,这里是 .xib 文件的屏幕截图:

感谢您的帮助!

【问题讨论】:

    标签: ios objective-c uitextview xcode5 autolayout


    【解决方案1】:

    http://www.techotopia.com/index.php/Implementing_iOS_6_Auto_Layout_Constraints_in_Code

    请参考本网站, 可能会得到你的解决方案

    【讨论】:

      【解决方案2】:

      看看Autolayout Visual Format Language。他们在去年的一些自动布局 WWDC 视频中谈到了这一点。

      这并不完整,但您需要定义垂直和水平的约束。这是完整的,但希望能给你一个粗略的想法来开始你的工作。

       // Vertical alignment should be centered
       NSArray *constraints = [NSLayoutConstraint
        constraintsWithVisualFormat:@"V:|[_imageView]-[_label1]-[_textBlock1]-[label2]-[textBlock2]-|"
                            options:NSLayoutFormatAlignAllCenterY
                            metrics:nil
                            views:viewsDictionary];
      
      // Tell the views/text blocks to take the entire width. The labels will be fine centered on them I think
      NSArray *constraints = [NSLayoutConstraint
        constraintsWithVisualFormat:@"H:|-[_imageView]-|"
                            options:NSLayoutFormatAlignAllCenterY
                            metrics:nil
                            views:viewsDictionary];
      
      NSArray *constraints = [NSLayoutConstraint
        constraintsWithVisualFormat:@"H:|-[_textBlock1]-|"
                            options:nil
                            metrics:nil
                            views:viewsDictionary];
      
      NSArray *constraints = [NSLayoutConstraint
        constraintsWithVisualFormat:@"H:|-[_textBlock2]-|"
                            options:nil
                            metrics:nil
                            views:viewsDictionary];                 
      

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 2015-01-19
        • 1970-01-01
        相关资源
        最近更新 更多