我有一个奇怪的问题,可能有一个非常简单的解决方案,我只是看不到它......
我有一个UIView类,它包含一个按钮作为子视图,跨越宽度的4/5和视图高度的三分之一。调整父视图的大小(例如,具有高度和宽度的一半)时,按钮应保持原位(父视图的前三分之一),现在也有一半的宽度,仍然是新高度的三分之一。 / p>
这意味着:
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标志上尝试了很多变化,但没有用 - 而且上面的标志也应该是正确的......
答案 0 :(得分:2)
这是你需要做的:
button.autoresizingMask = UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleBottomMargin;
如果设置灵活的高度和宽度而不设置灵活的边距,则调整大小时会发生的变化是高度和宽度发生变化,以便边距(即到超视图边界的距离)保持不变。
将高度和底部边距设置为灵活使顶部边距保持不变,并且视图将与超视图成比例地调整大小。宽度和右边距也一样。