Подтвердить что ты не робот

UIView autoresizingMask - Конструктор интерфейсов для кода - Программно создайте распорки и пружины - Swift или Objective-C

Я разработал некоторые подзаголовки с помощью Interface Builder, но я хотел бы сделать это вместо кода.

Я прочитал документы UIView о настройке свойства view.autoresizingMask. Я ищу логическое объяснение того, как перевести стойки и пружины, используя различные маски (например, UIViewAutoresizingFlexibleLeftMargin и т.д.).

4b9b3361

Ответ 1

При настройке маски авторезиста для представления используйте побитовое включение OR (|) (Objective-C) или массив (Swift 2, 3), чтобы указать пружины и распорки.

  • Пружины представлены указанием маски (Objective-C или Swift 3 соответственно):

    • vertical spring: UIViewAutoresizingFlexibleHeight или .flexibleHeight

    • horizontal spring: UIViewAutoresizingFlexibleWidth или .flexibleWidth

  • Struts представлены отсутствием одной из четырех "гибких полей" (т.е. если стойка не существует, указана маска для этого поля):

    • UIViewAutoresizingFlexibleLeftMargin или .flexibleLeftMargin

    • UIViewAutoresizingFlexibleRightMargin или .flexibleRightMargin

    • UIViewAutoresizingFlexibleTopMargin или .flexibleTopMargin

    • UIViewAutoresizingFlexibleBottomMargin или .flexibleBottomMargin

Например, представление с горизонтальной строкой spring и верхней и нижней строками будет иметь ширину, а левое и правое поля, указанные как гибкие:

Swift 3

mySubview.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin]

Swift 2

mySubview.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin]

Swift 1.2

mySubview.autoresizingMask = .FlexibleWidth | .FlexibleLeftMargin | .FlexibleRightMargin

Objective-C

mySubview.autoresizingMask = (UIViewAutoresizingFlexibleWidth |    
                              UIViewAutoresizingFlexibleLeftMargin |  
                              UIViewAutoresizingFlexibleRightMargin);

enter image description here

Ответ 2

UIViewAutoResizingMasks - это то, что мы называем "struts" и "springs". Рассмотрим это: у вас большой квадрат с небольшим квадратом внутри. Чтобы этот квадрат оставался идеально центрированным, вы должны установить фиксированную ширину из каждого внутреннего края большого квадрата, чтобы ограничить его. Это стойки.

Спрингс, с другой стороны, больше похож на UIView во время вращения. Скажем, наш взгляд должен оставаться в нижней части экрана, выровнен по центру (как UIToolbar). Мы хотим сохранить его верхним spring гибким, чтобы при повороте представления с 460 px до 320 px он сохранял его в том же положении относительно экрана, который теперь менялся. Выделение одной из этих пружин в IB равно настройке соответствующей UIViewAutoResizingMask и выделение верхнего spring, в частности, сродни вызову myView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin.

Значения могут использоваться в тандеме, заключая их в пару скобок и используя оператор или, например, myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)

Маски сообщают вам номера, потому что они являются typdef NSUInteger, и те флагов, которые им присвоили apple. Cmd + нажмите на один, чтобы увидеть его метод defintion.