Вопрос по ios, uiview, objective-c – UIView autoresizingMask - построитель интерфейса для кода - программно создавать распорки и пружины - Swift или Objective-C

53

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

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

Ваш Ответ

2   ответа
9

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

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

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

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

124

|) (Objective-C) или массив (Swift 2, 3) для указанияsprings а такжеstruts.

Springs are represented by specifying a mask (Objective-C or Swift 3, respectively):

vertical spring: UIViewAutoresizingFlexibleHeight or .flexibleHeight

horizontal spring: UIViewAutoresizingFlexibleWidth or .flexibleWidth

Struts are represented by the lack of one of the four 'flexible margin' masks (i.e. if a strut does not exist, the mask for that margin is specified):

UIViewAutoresizingFlexibleLeftMargin or .flexibleLeftMargin

UIViewAutoresizingFlexibleRightMargin or .flexibleRightMargin

UIViewAutoresizingFlexibleTopMargin or .flexibleTopMargin

UIViewAutoresizingFlexibleBottomMargin or .flexibleBottomMargin

Например, представление сhorizontal spring а такжеtop and bottom struts будет иметь ширину, а левые и правые поля указаны как гибкие:

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

Извините, мой провал ...
очень полезно, спасибо
@Flink - ваше редактирование неверно. Я вернул свой ответ обратно в исходное состояние. Пожалуйста, внимательно прочитайте его, особенно это: "Struts представлены отсутствием одного из четырех" гибких полей ". маски (т. е. если распорка НЕ существует, маска для этого поля указана): & quot; MattyG

Похожие вопросы