首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进入视图时稍组成UIBarButtonItem变更位置

进入视图时稍组成UIBarButtonItem变更位置
EN

Stack Overflow用户
提问于 2015-04-22 11:01:39
回答 7查看 900关注 0票数 13

当在导航栏中显示带有UIBarButtonSystemItemCompose按钮的新视图时,该位置稍微关闭,并在视图进入视图后进行调整。

我认为这是iOS中的一个bug (使用了8.3版本)。只有在使用UIBarButtonSystemItemCompose时才会发生这种情况。其他类型的按钮(系统、文本或自定义)不会发生这种情况。

复制此bug所需的唯一代码是将此ViewController代码与视图一起使用:

代码语言:javascript
复制
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    UIBarButtonItem* composeBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera
                                      target:nil
                                      action:nil];

    [self.navigationItem setRightBarButtonItem:composeBarButtonItem animated:YES];
}

@end

我用最少的代码在GitHub上创建了一个存储库来重现问题:https://github.com/jvdvleuten/iOSComposeBarButtonItemBug

看起来与此相关:UIBarButtonItems移位位置在UINavigationController建模中的应用,除了我的bug只有在使用UIBarButtonSystemItemCompose时才会出现。

有什么想法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-05-04 10:29:59

我用了谢尔盖的答案,但在我的按钮上保留了一个空白处。我用一个负隔板修复了它,它现在工作得很好:

代码语言:javascript
复制
UIBarButtonItem* composeBarButtonItem =
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose
                                              target:nil
                                              action:nil];

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
                                       initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                                       target:nil action:nil];
negativeSpacer.width = -6;

UIBarButtonItem *dumbBarButtonItem = [UIBarButtonItem new];

self.navigationItem.rightBarButtonItems = @[dumbBarButtonItem, negativeSpacer, self.composeBarButtonItem];
票数 4
EN

Stack Overflow用户

发布于 2015-05-01 20:02:42

这绝对是iOS 8.0中的一个bug。这种“跳转”发生在viewDidAppear之前。以下是解决这个问题的方法--添加另一个“哑”/空项:

代码语言:javascript
复制
UIBarButtonItem* composeBarButtonItem =
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose
                                              target:nil
                                              action:nil];
UIBarButtonItem *dumbBarButtonItem = [UIBarButtonItem new];
self.navigationItem.rightBarButtonItems = @[dumbBarButtonItem, composeBarButtonItem];
票数 2
EN

Stack Overflow用户

发布于 2015-07-11 06:32:47

一个简单的解决办法:

代码语言:javascript
复制
let composeButton = UIBarButtonItem(image: UIImage(named: "UIButtonBarCompose"), style: .Plain, target: self, action: "compose:")
self.navigationItem.rightBarButtonItem = composeButton

我们可以得到图像'UIButtonBarCompose‘与iOS-艺术作品-抽取器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29795465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档