UIView
具有UIViewAutoresizing
高度+顶部或高度+底部的自动调整大小行为是什么?这有意义吗?边距之一或视图本身是否优先?我刚刚发现我不小心将视图设置UIViewAutoresizing
为UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin
,这导致视图0
在其父级调整大小时调整到一个高度。
2 回答
这是自动调整大小的工作原理:
假设父视图的高度为 400,并且您的视图设置为 y = 100, height = 200
这意味着,您的视图上方有 100 个像素,您的视图有 200 个像素,您的视图下方有 100 个像素。
使用flexibleHeight和flexibleTop,表示当父view frame发生变化时,会保持底部100像素固定,剩余的部分在top margin和height之间按比例分割
因此,如果您从父级的 400 高度到 300 高度,这意味着它将使用 100 作为底部边距并按比例拆分剩余的 200,留下您的 y = 66.666 和高度 = 133.333
如果你从 400 高度到 100 高度,它仍然会使用那些 100 作为底部边距,为顶部边距和高度留下 0 空间,让你的 y = 0,高度 = 0
UIViewAutoresizingFlexibleTopMargin
当父视图调整大小时,将保持底部边距不变,UIViewAutoresizingFlexibleHeight
并将其高度与其父高度成比例地更改为剩余高度。
我看不到UIViewAutoresizingFlexibleHeight
. 我曾经使用UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth
过一个视图,其中包含一些文本,以独立于我的设备的方向,以恒定的高度粘贴到我的父视图的底部。