在 Swift 2 中以编程方式调整 UITextView 的大小以扩大其宽度

Posted

技术标签:

【中文标题】在 Swift 2 中以编程方式调整 UITextView 的大小以扩大其宽度【英文标题】:Resizing a UITextView programmatically in Swift 2 to enlarge its width 【发布时间】: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 以它的右边框到屏幕右边框的方式放大?

【问题讨论】:

可以发一张现场截图吗? 【参考方案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/…

以上是关于在 Swift 2 中以编程方式调整 UITextView 的大小以扩大其宽度的主要内容,如果未能解决你的问题,请参考以下文章

禁用 UILabel、UIText 等的自动调整字体。在 iOS/Swift 中?

iOS - 在 Swift 3 中以编程方式删除和激活新约束时布局损坏

在 SWIFT 2.x 中以编程方式使用 NavigationController 调用 UIViewController

在 Swift 中以编程方式居中按钮

在 swift 中以编程方式在堆栈视图中添加标签和文本视图

在 Swift 4 中以编程方式将 UIImageView、UILabel 添加到 UIStackView