我一直在寻找有关调整大小的背景信息,但我找不到多少。我知道我需要在超级视图上设置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没有它就可以正常工作,但它现在表现得如预期的那样。
答案 0 :(得分:4)
我认为您在子视图中缺少UIViewAutoresizingFlexibleHeight
或宽度。否则我认为视图只是根据边距移动,但没有调整大小。
答案 1 :(得分:0)
你提到轮换。包含自定义视图的超级视图是否实际正确调整大小?如果有疑问,请将其背景设置为某种奇怪的颜色。如果在方向更改后没有正确调整大小,则应在右侧看到白色或灰色条。