2

是否可以为 UIView 的 autoresizingMask 属性提供一个数组?我想这样做的原因是我有一些条件可以确定要添加到我的视图中的 autoresizingMask 属性。

所以,而不是仅仅使用:

self.view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth;

我想做类似的事情:

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

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

所以我基本上想有条件地设置这个属性的项目。

4

2 回答 2

6

这有点面具。只需按位或与您想要的那个。

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

要重置掩码,您可以将其设置为 0,或者如果要删除特定属性,可以将其取反并按位与掩码一起使用:

if(removeMargin)
    self.view.autoresizingMask &= ~UIViewAutoresizingFlexibleRightMargin;
于 2011-08-18T17:23:26.073 回答
2

自动调整大小只是一个位掩码。

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

self.view.autoresizingMask = resize
于 2011-08-18T17:23:09.487 回答