代码之家  ›  专栏  ›  技术社区  ›  Dark star

添加约束时使translatesAutoresizingMaskinToConstraints为false

  •  -1
  • Dark star  · 技术社区  · 6 年前

    我以编程方式创建视图,当我想向视图添加自动布局时,设置 translatesAutoresizingMaskIntoConstraints 每次都是假的。现在我在寻找任何能让生活更轻松的方法。 是否有任何扩展或类使其在每次添加约束时都被禁用?

    谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Glenn Posadas    6 年前

    我想你可以加上这句话 translatesAutoresizingMaskIntoConstraints 在你看来,子类。例如,您通常使用 UITextField 或者说 UIView ,当然有这样的基类,比如:

    import UIKit
    
    /// Another Customized/Subclassed UIButton.
    class BaseButton: UIButton {
    
        /// override init
        override init(frame: CGRect) {
            super.init(frame: frame)
    
                self.translatesAutoresizingMaskIntoConstraints = false
           }
        }
    
        /// override coder
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }
    

    或者更好,我可以建议,下面这个吗?我将snapkit用于所有生产级项目。

    https://github.com/SnapKit/SnapKit

    我希望这有帮助!

        2
  •  0
  •   Ratnesh Jain Avo Suqiasyan    6 年前

    您可以扩展 UIView 为约束初始化,以便它应用于 UIControls 习俗 UIViews .

    extension UIView {
        func anchor(_ anotherView: UIView) {
            anotherView.translatesAutoresizingMaskIntoConstraints = false
            self.addSubview(anotherView)
            anotherView.leftAnchor.constraint(equalTo: self.leftAnchor).isActive = true
            anotherView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
            anotherView.rightAnchor.constraint(equalTo: self.rightAnchor).isActive = true
            anotherView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
        }
    }
    

    例子:

    func setupView() {
        self.view.anchor(self.someImageView)
    }