iPad Pixel翻倍?

时间:2011-02-03 03:15:12

标签: iphone objective-c ipad pixels

我最近在我的应用中发现了一种非常奇怪的行为。为视图设置框架时,其行为就像原点是我输入的两倍。没有其他视图受影响,受影响视图的宽度和高度也不受影响。以前有人见过或听过这样的事吗?

编辑:

这是我的自定义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;
}

1 个答案:

答案 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];