当alertview被取消时,右侧导航栏按钮会移动

rau*_*aul 5 cocoa uiimage uialertview rightbarbuttonitem ios7

我正在调整iOS 6应用程序到iOS 7,我遇到了一个奇怪的"错误".在一个屏幕上有一个rightBarButtonItem,其中有一个简单的图像显示在他的位置.但是,如果应用程序显示警报视图,当我点击警报视图的"确定"按钮(此警报中的唯一按钮)时,图像会向下移动(50 px左右).没有与此警报视图相关联的操作,它只是提供信息.

此外,如果我更改按钮的图像(setImage),此图像将显示在不适当的位置.

rau*_*aul 7

好吧,我终于找到了自己的解决方案:

我有一个UIBarButtonItemUIBarButtonItemStylePlain与图像设置好的setImageUIBarButtonItem.

为了解决这个问题,我创建了一个UIButton带有图像(用它设置框架CGRectMake),然后我创建了UIBarButtonItemwith initWithCustomView并使用了UIButtonas作为CustomView.这样,图像总是应该在的位置.

编辑:

UIButton* aButton = [UIButton buttonWithType:UIButtonTypeCustom];
aButton.frame = CGRectMake(0.0, 40.0, 30.0, 30.0);
[aButton setBackgroundImage:[UIImage imageNamed:@"anImage.png"] forState:UIControlStateNormal];
[aButton addTarget:self action:@selector(aFunction:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *anUIBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:aButton]; 
self.navigationItem.rightBarButtonItem = anUIBarButtonItem;
Run Code Online (Sandbox Code Playgroud)