【问题标题】:Resizing a UITextView programmatically in Swift 2 to enlarge its width在 Swift 2 中以编程方式调整 UITextView 的大小以扩大其宽度
【发布时间】:2016-05-24 14:21:43
【问题描述】:

编辑:我发布了我想在 iPad 和 iPhone 中实现的屏幕截图。在 iPhone 中使用按钮时,UITableView 会打开并且必须覆盖 UITextView 的一部分。

我有一个适用于 iPhone 和 iPad 的通用项目。在主情节提要中有两个控件,一个 UITextField 和一个 UITableView。 UITextField 保留屏幕的左侧 1/3 部分,而 UITableView 保留屏幕的剩余部分。

在 iPhone 中,我隐藏 UITableView,我希望 UITextView 保留所有屏幕。然后,当用户点击一个按钮时,UITableView 会出现在文本字段上方(一旦用户选择一个选项,我就会关闭 UITableView)。

如何让 tableView 以它的右边框到屏幕右边框的方式放大?

【问题讨论】:

  • 可以发一张现场截图吗?

标签: uitableview swift2


【解决方案1】:

实现您所描述的一种方法是从场景“外部”的 TableView 开始,主视图的前导空间为负。它们在用户按下按钮时,Leading Space Constraint 的值设置为零。

例子:

最终结果:

ViewController 代码:

class ViewController: UIViewController {

    @IBOutlet weak var tableViewLeadingMargin: NSLayoutConstraint!

    @IBAction func revealTableView(sender: UIButton) {
        UIView.animateWithDuration(
            3.0,
            animations: {
                self.tableViewLeadingMargin.constant = 0
                self.view.layoutIfNeeded()
            }
        )
    }
}

只有一个警告:您需要根据 iPhone 屏幕尺寸以编程方式调整 TableView 的宽度。

iPhone 问题上面的答案。对于 iPad,我建议使用 Size Classes,为它们创建特定的布局/约束:

举例说明:

【讨论】:

  • 感谢您的帮助。我需要澄清一下。当应用程序在 iPad 上运行时,TextView 占据了三分之二的空间,当应用程序在 iPhone 上运行时,相同的 TextView 必须占据所有宽度空间。如何在 viewDidLoad() 中以编程方式调整 TextField 的大小?你好心帮我把这个伪代码转换成真正的 Swift 2 代码吗? (请见下文)
  • let model = UIDevice.currentDevice().model if model == "iPhone" { mainTextFieldRightBorder = rightBorderOfMainView // 伪代码(实际上不起作用) }
  • 嗨。对于 iPad,我建议使用 Size Classes。这样,您将拥有特定的布局/约束,并且不需要以编程方式对其进行调整。我更新了我的答案。请看一看。
  • 我提供了一个关于如何使用 Size Classes 创建 iPad 布局的示例。
  • 没关系。根据您添加的屏幕截图,我认为我建议的方法可以解决问题。您只需要学习如何使用 Size Classes。然后,您将使用我发布的 iPhone 解决方案和 iPad 解决方案,每个解决方案都有自己的自适应布局。请参考这个(关注 Size Classes):raywenderlich.com/113768/…
猜你喜欢
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多