iOS: AutoresizingMask с использованием массива? - PullRequest
2 голосов
/ 18 августа 2011

Можно ли предоставить массив для свойства autoresizingMask в UIView?Причина, по которой я хочу это сделать, заключается в том, что у меня есть некоторые условия, которые определяют, какие свойства autoresizingMask я хочу добавить в мое представление.

Итак, вместо того, чтобы просто использовать:

self.view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth;

Iхочу сделать что-то вроде:

if (addMargin) {
   [items addObject:UIViewAutoresizingFlexibleRightMargin];
}
if (addWidth) {
   [items addObject:UIViewAutoresizingFlexibleWidth];
}

// Add to property
self.view.autoresizingMask = items;

Так что я в основном хочу условно установить элементы этого свойства.

Ответы [ 2 ]

6 голосов
/ 18 августа 2011

Это немного маска.Просто поразрядно - ИЛИ с тем, который вам нужен.

if(addMargin)
    self.view.autoresizingMask |= UIViewAutoresizingFlexibleRightMargin;
if(addWidth)
    self.view.autoresizingMask |= UIViewAutoresizingFlexibleWidth;

Чтобы сбросить маску, вы можете установить ее на 0, или, если вы хотите удалить определенный атрибут, вы можете отрицать его и побитово - Имаска с ним:

if(removeMargin)
    self.view.autoresizingMask &= ~UIViewAutoresizingFlexibleRightMargin;
2 голосов
/ 18 августа 2011

Авторазмер - просто битовая маска.

UIViewAutoresizing resize = 0;
if (addMargin) {
    resize = resize | UIViewAutoresizingFlexibleRightMargin;
}
if (addWidth) {
    resize = resize | UIViewAutoresizingFlexibleWidth;
}

self.view.autoresizingMask = resize
...