5

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

此外,如果我更改按钮的图像 (setImage),该图像会显得格格不入。

4

3 回答 3

7

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

UIBarButtonItem在. UIBarButtonItemStylePlain_ setImage_UIBarButtonItem

为了解决这个问题,我创建了一个UIButtonwith 图像(用 设置它的框架CGRectMake),然后我创建了UIBarButtonItemwithinitWithCustomViewUIButton使用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;
于 2014-02-13T13:25:41.920 回答
0

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

我不确定为什么它很重要,但它解决了我的问题,即栏按钮项目在 uialertcontroller 解雇时得到偏移。

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

于 2018-01-31T19:05:09.313 回答
0

感谢这个 raul,我已经将它翻译成 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
于 2016-04-26T02:04:32.983 回答