【问题标题】:Dynamic Auto Layout动态自动布局
【发布时间】:2016-06-17 08:01:05
【问题描述】:
致所有阅读它的人。我想制作 Viber、WhatsApp 等聊天应用程序。对我来说,主要问题是动态设计。如果用户界面是固定的,我知道如何处理约束,但如果它正在改变,我不知道。
请看 Viber 的动画:
输入和接收或发送消息时,一切都在移动和变化。如何使用 Autoalyout 做到这一点?特别是我很有趣如何使用 UITextView 来做到这一点。键入时扩展它,更重要的是,如何将表格视图移动到其上方。也许,更改包含文本视图的父视图的大小。我认为所有这些东西都可以称为动态自动布局。
我将不胜感激任何帮助或建议!
我使用的是 Swift 和 Xcode 7,都是最新版本。
【问题讨论】:
标签:
ios
xcode
swift
autolayout
constraints
【解决方案1】:
这是一段使用 UIStackViews 构建键盘的代码。布局由 UIStackView 管理。
func newPad(runModeVariable:Int) {
var xPos:CGFloat = 0
var yPos:CGFloat = 0
keyPadWindow = UIView(frame: CGRect(x: xPos, y: yPos, width: 320, height: 356))
var keyCount = 0
keyPadSV = UIStackView(frame: CGRect(x: 0, y: 0, width: 320, height: 356))
keyPadSV!.axis = .Vertical
keyPadSV!.spacing = 0.0
keyPadSV!.alignment = .Center
keyPadSV!.distribution = .EqualSpacing
for _ in 0 ..< 5 {
let keyPadSVB = UIStackView(frame:CGRect(x: 0, y: 0, width: 0, height: 0))
keyPadSVB.axis = .Horizontal
keyPadSVB.spacing = 0.0
keyPadSVB.alignment = .Center
keyPadSVB.distribution = .EqualSpacing
for _ in 0 ..< 4 {
let button = UIButton(type: UIButtonType.Custom) as UIButton
button.frame = CGRectMake(0, 0, 0, 0)
button.tag = keyCount
let blah = "x" + String(keyCount)
let blahIMAGE = UIImage(named: blah)
button.setImage(blahIMAGE, forState: UIControlState.Normal)
button.addTarget(self, action: #selector(ViewController.keyPadPress(_:)), forControlEvents: UIControlEvents.TouchUpInside)
keyPadSVB.addArrangedSubview(button)
keyCount += 1
}
keyPadSV.addArrangedSubview(keyPadSVB)
}
keyPadWindow.addSubview(keyPadSV)
self.view.addSubview(keyPadWindow)
}