我以编程方式创建视图,并且当我想向视图添加自动布局时,每次都将translatesAutoresizingMaskIntoConstraints
设置为false会很痛苦。现在,我正在寻找可以简化生活的解决方案。
每当我想添加约束时,是否有任何扩展或类使其使其禁用?
谢谢。
答案 0 :(得分:1)
我认为您可以在视图子类中添加该行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
我希望这会有所帮助!
答案 1 :(得分:0)
您可以扩展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)
}