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

时间:2014-02-11 09:29:28

标签: cocoa ios7 uiimage uialertview rightbarbuttonitem

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

此外,如果我更改按钮的图像(setImage),此图像将显示在原位。

3 个答案:

答案 0 :(得分:7)

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

UIBarButtonItem UIBarButtonItemStylePlain setImageUIBarButtonItem上有UIButton设置的图片。

要解决此问题,我已使用图片创建CGRectMake(使用UIBarButtonItem设置其框架),然后我使用initWithCustomView创建了UIButton并使用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; 。这样,图像总是在应有的位置。

编辑:

{{1}}

答案 1 :(得分:0)

感谢您的支持,我已经为Swift用户将其翻译成Swift:

let a = UIButton(type: .Custom)
a.frame = CGRectMake(0.0, 40.0, 30.0, 30.0)
a.setBackgroundImage(UIImage(named: "Share")!, forState: .Normal)
a.addTarget(self, action: "shareThis:", forControlEvents: .TouchUpInside)
let uiItem = UIBarButtonItem(customView: a)
self.navigationItem.rightBarButtonItem = uiItem

答案 2 :(得分:0)

我的右侧导航栏按钮出现了类似的问题,当我删除违规栏按钮项的“标题”值时它就消失了。在我的情况下,标题应该永远不会被设置,因为按钮使用图像。 YMMV。

我不确定为什么这很重要但它解决了我的问题,条形按钮项目在uialertcontroller解雇时得到了抵消。

我从这个问题中得到了灵感:UIAlertController moves leftBarButtonItem down