Ну, просто предложение, так как раздражает всегда устанавливать значение false, просто установить функцию со всеми общими настройками для UIView
и вызывать ее каждый раз, это экономит время и это немного менее раздражает, чем попытка и установказначения каждый раз,
extension UIView {
func notTranslated() {
self.translatesAutoresizingMaskIntoConstraints = false
//Add any additional code.
}
}
//Usage
let view = UIView()
view.notTranslated()
Вы не можете override
свойства этого ограничения, потому что UIView
может быть объявлено в IB
translationsAutoresizingMaskIntoConstraints в соответствии с яблоко .
По умолчанию это свойство имеет значение true для любого представления, которое вы создаете программным способом.Если вы добавляете представления в Интерфейсный Разработчик, система автоматически устанавливает для этого свойства значение false.
представьте, если бы вы могли override
это из extension
, что привело бы к некоторым конфликтам, если бы были другие UIView
имеют противоположное значение True || false
, поэтому, по моему мнению:
Apple сделала это, чтобы предотвратить любые конфликты с ограничениями представлений, поэтому, если вы неМне нравится писать это каждый раз, когда просто обернуть это в функцию.
Пожалуйста, если у кого-то есть дополнительная информация, не стесняйтесь вносить.
ОБНОВЛЕНИЕ: я нашел этот крутой ответ, который также может работать, посмотрите код ниже.
class MyNibless: UIView {
//-----------------------------------------------------------------------------------------------------
//Constructors, Initializers, and UIView lifecycle
//-----------------------------------------------------------------------------------------------------
override init(frame: CGRect) {
super.init(frame: frame)
didLoad()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
didLoad()
}
convenience init() {
self.init(frame: CGRect.zero)
}
func didLoad() {
//Place your initialization code here
//I actually create & place constraints in here, instead of in
//updateConstraints
}
override func layoutSubviews() {
super.layoutSubviews()
//Custom manually positioning layout goes here (auto-layout pass has already run first pass)
}
override func updateConstraints() {
super.updateConstraints()
//Disable this if you are adding constraints manually
//or you're going to have a 'bad time'
//self.translatesAutoresizingMaskIntoConstraints = false
translatesAutoresizingMaskIntoConstraints = false
//Add custom constraint code here
}
}
var nibless: UIView = MyNibless()
//Usage
nibless.updateConstraints()
print(nibless.translatesAutoresizingMaskIntoConstraints) //false
Просто создайте MyNibless
экземпляр как UIView
, и это также откроет большую дверь для настроек