动态自动布局

时间:2016-06-17 08:01:06

标签: ios xcode swift autolayout constraints

给每个阅读它的人。我想制作像Viber,WhatsApp等聊天应用程序。对我来说主要的问题是动态设计。如果用户界面坚持,我知道如何使用约束,但如果它正在改变,我不知道。 请看Viber的动画: Viber chat screen 在输入和接收或发送消息时,一切都在变化。如何使用Autoalyout进行操作?特别是我很有兴趣如何使用UITextView。在键入时扩展它,更重要的是,如何在其上方移动表视图。也许,更改保存文本视图的父视图的大小。我认为所有这些东西都可以称为动态自动布局。 我将不胜感激任何帮助或建议! 我使用的是Swift和Xcode 7,所有最新版本。

1 个答案:

答案 0 :(得分:0)

这是使用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)
}