1

在我的应用程序的主视图中,我UIBarButtonItem使用自定义图像(使用创建)实例化 3 个(2 个实际按钮和 1 个灵活间隔)[UIImage imageNamed:],然后将它们设置为UIToolBar. 这是代码:

-(void)viewDidLoad{
    [super viewDidLoad];

    UIToolbar *menuBar = [UIToolbar new];
    menuBar.barStyle = UIBarStyleDefault;

    CGRect viewBounds = [UIScreen mainScreen].bounds;

    //menuBar is rotated to be viewed vertically along the right side of the device in portrait orientation, the app does not support device rotation
    menuBar.transform = CGAffineTransformRotate(menuBar.transform, M_PI * 0.5f);

    [menuBar setFrame:CGRectMake(viewBounds.size.width - menuBarHeight, 5, menuBarHeight, viewBounds.size.height)];

    [self.view addSubview:menuBar];

    [menuBar release];

    UIBarButtonItem
        *peekButton = [[UIBarButtonItem alloc]
                       initWithImage:[UIImage imageNamed:@"peekIcon.png"]
                       style:UIBarButtonItemStyleDone
                       target:self
                       action:@selector(peek:)],
        *pauseButton = [[UIBarButtonItem alloc]
                        initWithImage:[UIImage imageNamed:@"pauseIcon.png"]
                        style:UIBarButtonItemStyleDone
                        target:self
                        action:@selector(pauseGame:)],
        *flexSpace = [[UIBarButtonItem alloc]
                      initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                      target:nil
                      action:nil];

    menuBar.items = @[flexSpace, pauseButton, peekButton];

    [flexSpace release];
    [pauseButton release];
    [peekButton release];
}

在运行 iOS 5.1 的 iPod touch 上运行时,工具栏和按钮按预期显示,如下所示:

在此处输入图像描述

但是在 iPad(iOS 4.3)上运行时,纹理看起来像这样:

在此处输入图像描述

我似乎无法辨别原因,但是,我相信它可能是操作系统或设备特定的错误,因为我一直遇到类似的模糊图形问题,其中 UI 元素的绘制完全无视底层对象的数据。不幸的是,我找不到任何相关文档(Apple 或其他明智的)来阐明这个问题。

非常感谢任何输入,谢谢。

4

1 回答 1

1

问题似乎来自于调用 UINavigationController 的方法

-(void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated;

由于屏幕转换最初不是为了动画,所以animated参数是NO. 将值更改为YES似乎是解决方案。

这似乎也解决了我遇到的其他一些图形问题。

于 2012-12-03T15:00:22.520 回答