UIView子类不会自动调整大小

时间:2010-01-23 18:25:09

标签: iphone uiview

我一直在寻找有关调整大小的背景信息,但我找不到多少。我知道我需要在超级视图上设置autoresizesSubviews,在子视图上设置autoresizingMask

我已经完成了这个,我的UIImageViews正确调整大小,但我的自定义UIView子类没有。

UIImageView的代码:

UIImageView *newX = [[[UIImageView alloc] initWithImage:dot] autorelease];
[newX setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[newX setFrame:CGRectMake(0, 0, self.view.bounds.size.width, 1)];
[self.view addSubview:newX];

自定义UIView子类的代码:

trace = [[TraceView alloc] initWithFrame:self.view.bounds];
[trace setAutoresizingMask:(UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin)];
[self.view addSubview:trace];

据我所知,视图按预期旋转,但不会调整大小。我再也看不到它的底部了,它没有填满右边的屏幕。 我是否必须向UIView子类添加任何内容才能使调整大小正常工作?

修改 我已经将autoresizingMake更改为(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)并调用[subview setNeedsDisplay];我不知道为什么这是必要的,因为UIImageViews没有它就可以正常工作,但它现在表现得如预期的那样。

2 个答案:

答案 0 :(得分:4)

我认为您在子视图中缺少UIViewAutoresizingFlexibleHeight或宽度。否则我认为视图只是根据边距移动,但没有调整大小。

答案 1 :(得分:0)

你提到轮换。包含自定义视图的超级视图是否实际正确调整大小?如果有疑问,请将其背景设置为某种奇怪的颜色。如果在方向更改后没有正确调整大小,则应在右侧看到白色或灰色条。

相关问题