在 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