专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构

自动布局设置控件位置

  • AutoLayout约束:
    • 要确定一个view的约束.需要指定位置约束尺寸约束
    • 位置约束分为: 水平方向(x)垂直方向(y)
  • 设置自动布局

    // MARK: - 准备UI
    private func setupUI() {
      // 添加子控件
      addSubview(iconView)
      addSubview(homeView)
      addSubview(messageLabel)
      addSubview(registerButton)
      addSubview(loginButton)
    
      // 设置布局
    
      // 使用自动约束一定要设置成false.
      iconView.translatesAutoresizingMaskIntoConstraints = false
      homeView.translatesAutoresizingMaskIntoConstraints = false
      messageLabel.translatesAutoresizingMaskIntoConstraints = false
      registerButton.translatesAutoresizingMaskIntoConstraints = false
      loginButton.translatesAutoresizingMaskIntoConstraints = false
    
      // iconView X方向
      addConstraint(NSLayoutConstraint(item: iconView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0))
      // iconView Y方向
    
      addConstraint(NSLayoutConstraint(item: iconView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: -40))
    
      // 房子
      // X方向
      addConstraint(NSLayoutConstraint(item: homeView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: iconView, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0))
      // Y方向
      addConstraint(NSLayoutConstraint(item: homeView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: iconView, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 0))
    
      // 消息label. CenterX和iconView.CenterX重合.,宽度224
      addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: iconView, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0))
      // 顶部距离iconView底部16
      addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: iconView, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 16))
      // 如果不参照其他控件toItem填nil. attribute填: NSLayoutAttribute.NotAnAttribute
      addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 224))
    
      // 注册按钮
      // 顶部距离messageLabel 16
      addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: messageLabel, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 16))
      // 左边和messageLabel的左边重合
      addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.left, relatedBy: NSLayoutRelation.equal, toItem: messageLabel, attribute: NSLayoutAttribute.left, multiplier: 1, constant: 0))
      // 宽度 100
      addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100))
      // 高度 35
      addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 35))
    
      // 注册按钮
      // 顶部距离messageLabel 16
      addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: registerButton, attribute: NSLayoutAttribute.top, multiplier: 1, constant: 0))
      // 左边和messageLabel的左边重合
      addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.right, relatedBy: NSLayoutRelation.equal, toItem: messageLabel, attribute: NSLayoutAttribute.right, multiplier: 1, constant: 0))
      // 宽度 100
      addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: registerButton, attribute: NSLayoutAttribute.width, multiplier: 1, constant: 0))
      // 高度 35
      addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: registerButton, attribute: NSLayoutAttribute.height, multiplier: 1, constant: 0))
    }
    
  • 按钮图片切片

results matching ""

    No results matching ""