我最近在我的应用中发现了一种非常奇怪的行为。为视图设置框架时,其行为就像原点是我输入的两倍。没有其他视图受影响,受影响视图的宽度和高度也不受影响。以前有人见过或听过这样的事吗?
编辑:
这是我的自定义init方法中的代码,它似乎以某种方式引起了问题,但我不能分开原因。
if ((self = [super initWithFrame:frame])) {
self.backgroundColor = [UIColor clearColor];
self.controller = aController;
self.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0];
UIView *centerView = [[UIView alloc] initWithFrame:frame];
[self addSubview:centerView];
UIToolbar *navBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 44)];
NSMutableArray *array = [[NSMutableArray alloc] init];
UIBarButtonItem *item = item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:self action:@selector(closeClicked:)];
[array addObject:item];
item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[array addObject:item];
item = [[UIBarButtonItem alloc] initWithTitle:@"Title" style:UIBarButtonItemStylePlain target:nil action:nil];
[array addObject:item];
item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[array addObject:item];
item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];
[array addObject:item];
[navBar setItems:array];
[centerView addSubview:navBar];
centerView.clipsToBounds = YES;
centerView.opaque = TRUE;
centerView.alpha = 1.0;
centerView.backgroundColor = [UIColor whiteColor];
[self addSubview:centerView];
}
return self;
}
答案 0 :(得分:2)
在使用xib之前,我经历过类似的奇怪事情。它通常是由xib内部标记为iPhone xib而不是iPad xib引起的。通常它需要我从头开始重新创建xib。
这是一款通用应用吗?确保您的iPad xib是初始化视图控制器时正在加载的那个。
添加代码后编辑:
问题似乎是你传入的框架。如果你的init方法传递了一个(10,10,w,h)的框架,那么当你创建centerView意味着无论在什么情况下它都在10,10,所以如果你的封闭视图在10,10,中心视图在10,10在封闭视图内,则中心视图看起来在20,20以内范围。
您需要创建您的centerView,其中0,0为x,y:
CGRect centerViewFrame = CGRectMake(0, 0, frame.size.width, frame.size.height);
UIView *centerView = [[UIView alloc] centerViewFrame];