我有一个(可能是错误的)假设,在xib中启用右页边距指示器等同于在代码中使用UIViewAutoresizingFlexibleLeftMargin等。

所以,根据这张快照,我曾经想过:

今天晚些时候,我不得不交叉检查,偶然发现了这条线索。

还有苹果文档,标题为“使用自动调整大小规则自动处理布局更改”的部分在这个链接:https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/CreatingViews.html

所以我现在有一个更新的概念在我的脑海中,如何设置自动调整蒙版编程将等价于xib设置:

场景1: 只设置(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)相当于:

在XIB吗?

场景2: 在代码中设置(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)相当于:

在XIB吗?

我的两个更新的场景正确吗?我现在明白了吗?


是的,界面建设者在某种意义上(或UIView,取决于你如何看待它)有“反转”。你引用的“场景”是正确的。


是的,你引用的东西是正确的。此外,我同意这感觉有点倒退,所以出于这个原因,我很欣赏你的文章。

你可能喜欢使用预处理宏uiviewautoresizingflexiblemargin,使一个UIView的边缘在每个方向都是灵活的。我把它放在预编译的头文件中,所以它被包括在任何地方。

#define UIViewAutoresizingFlexibleMargins                 \
              UIViewAutoresizingFlexibleBottomMargin    | \
              UIViewAutoresizingFlexibleLeftMargin      | \
              UIViewAutoresizingFlexibleRightMargin     | \
              UIViewAutoresizingFlexibleTopMargin

使用uiviewautoresizingflexiblemargin将使UI元素保持居中,因为它不会拥抱任何一侧。要使元素随其父元素一起增长/收缩,分别设置UIViewAutoresizingFlexibleWidth和UIViewAutoresizingFlexibleHeight。

我喜欢使用uiviewautoresizingflexiblemargin,因为我可以稍后引用它:

myView.autoresizingMask = UIViewAutoresizingFlexibleMargins;

而不是

myView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;

我经常看到这些边距在一行上,就像上面的例子一样。只是很难读懂。


启用框内的垂直/水平箭头(称为弹簧)将使高度/宽度灵活。但是启用外线(称为strut)将使这一侧不灵活/不灵活。

启用左外行(左支柱)并不等同于启用UIViewAutoresizingFlexibleRightMargin。相反,UIViewAutoresizingFlexibleRightMargin = on如果右支柱被禁用,关闭如果右支柱被启用。

一开始这很令人困惑,但如果你仔细观察,弹簧和支柱是有区别的。我不知道苹果为什么这样做,但对我来说,在某些情况下,它更容易使用。在代码中使用相反的属性更令人困惑。


斯威夫特4 使用这个

gadBannerView?.autoresizingMask = [.flexibleRightMargin  , .flexibleLeftMargin , .flexibleTopMargin , .flexibleBottomMargin]

objective - c

myView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;