Iphone 自动调整子视图的大小:调整大小似乎是绝对的,而不是比例的
我有一个奇怪的问题,可能有一个非常简单的解决方案,我就是看不出来 我有一个UIView类,它包含一个按钮作为子视图,跨越视图宽度的五分之四和高度的三分之一。调整父视图的大小时(例如,具有高度和宽度的一半),按钮应保持在原来的位置(父视图的上三分之一),现在也具有宽度的一半和新高度的三分之一 这意味着:Iphone 自动调整子视图的大小:调整大小似乎是绝对的,而不是比例的,iphone,uiview,autoresize,Iphone,Uiview,Autoresize,我有一个奇怪的问题,可能有一个非常简单的解决方案,我就是看不出来 我有一个UIView类,它包含一个按钮作为子视图,跨越视图宽度的五分之四和高度的三分之一。调整父视图的大小时(例如,具有高度和宽度的一半),按钮应保持在原来的位置(父视图的上三分之一),现在也具有宽度的一半和新高度的三分之一 这意味着: Parent before: Frame (0,0,100,100) Button before: Frame (0,0,80,33.3) Parent after: Frame (0,0,50
Parent before: Frame (0,0,100,100)
Button before: Frame (0,0,80,33.3)
Parent after: Frame (0,0,50,50)
Button after: Frame (0,0,40,16.7)
问题是,按钮后面总是有帧(0,0,30,0)。看起来,我刚刚通过减去50像素的变化,而不是按比例调整大小,获得了按钮的新宽度和高度。一定是很愚蠢的事,但我就是找不到
以下是我的UIView类的代码:
-(id)init
{
self = [super init];
if(self)
{
self.autoresizesSubviews = true;
self.frame = CGRectMake(0,0,100,100);
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0,0,80, self.frame.size.height / 3);
button.autoresizingMask = UIViewAutoresizingFlexibleHeight
|UIViewAutoresizingFlexibleWidth;
[self addSubview:button];
}
return self;
}
有人有主意吗?我已经在autoresizeMask标志上尝试了很多变化,但是没有用-上面的标志也应该是正确的…这就是您需要做的:
button.autoresizingMask = UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleBottomMargin;
如果在不设置灵活边距的情况下设置灵活的高度和宽度,则调整大小时会发生的情况是高度和宽度会发生变化,以便边距(即到superview边界的距离)保持不变
将“高度”和“底部边距”设置为“灵活”将使顶部边距保持不变,并且视图将根据superview按比例调整大小。宽度和右边距也是一样。我自己刚刚找到了它,在与IB进行了比较并与代码中的设置进行了比较之后。。。这两者之间的矛盾令人难以置信-在IB中,它足以主动设置两条内部红线,并将外部线保留为灰色,但在autoresizingMask中,您必须添加所有标志-对于我想做的事情,即使是左边缘和上边缘的标志。。。但无论如何还是要感谢:-)它实际上是相当一致的:框中的弹簧相当于
uiviewautoresizingflexiblewhight
和UIViewAutoresizingFlexibleWidth
,激活顶部结构相当于关闭uiviewautoresizingflexibletpmargin
(其他三个页边距也是如此).如果您知道,则保持一致:-)