【问题标题】:Right bar button not appearing in iphone 6 and 6+iphone 6和6+中没有出现右栏按钮
【发布时间】:2015-06-29 08:21:15
【问题描述】:

我正在尝试在我的标签栏navigationbar 中添加一个右栏按钮,它在 iphone 5 和 5s 设备以及所有模拟器中都可以正常工作。但它没有出现在 iphone 6 和 6+ 设备中。但是它在 iphone 6 和 6+ 的模拟器上运行良好。

这是按钮代码。

@property (nonatomic, weak) UIButton *rightButton;



-(void)setNavigationBarRightButton
{


    rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
    rightButton.frame = CGRectMake(0, 0, 40, 40);
    rightButton.layer.cornerRadius = 20;
    rightButton.layer.borderColor = [[UIColor lightGrayColor] CGColor];
    rightButton.layer.borderWidth = 2;
    rightButton.imageView.layer.cornerRadius = 20;
    rightButton.clipsToBounds = YES;




    UIImage* image;

    NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];


    if (imageData == (id)[NSNull null] || imageData.length == 0) {
        NSLog(@"image data is %@",imageData);
        image = [UIImage imageNamed:@"defaultIcon.png"];
    }
    else {
        image = [UIImage imageWithData:imageData];

    }

    // rightButton.imageView.image = image;
    [rightButton setBackgroundImage:image forState:UIControlStateNormal];

    [rightButton addTarget:self action:@selector(onClickrighttButton:) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightButton];

    self.tabBarController.navigationItem.rightBarButtonItem = rightBarButtonItem;




}

- (void)onClickrighttButton:(id)sender
{
    NSLog(@"clicked");

}

图片中也可以看到

还有一张清晰的iphone 6图片

看到按钮的边框为 2,甚至没有出现占位符。

【问题讨论】:

  • 您是否尝试清理项目以及可能的派生数据?
  • 你不应该持有弱引用。试试@property (nonatomic) UIButton *rightButton;
  • 在我的脑海中,我认为你应该在视图控制器本身上设置它,而不是标签栏控制器。还是您的层次结构实际上是 Nav > Tab > Content?
  • 我猜你还没有设置 iPhone 6 和 6+ 的启动屏幕。添加它并立即尝试。
  • 我有 6 和 6+ 的启动屏幕

标签: ios objective-c navigationbar rightbarbuttonitem uitabview


【解决方案1】:

1) 如果您使用 Autoresizing Sub-Mask,请检查您是否正确设置了“Autoresizing Mask”,[Check in Preview]。

2) 如果您使用的是 Size 类,请确保您设置了约束,[Check in Preview]。

3) 第二件事,如果它无论如何都不起作用并且您很着急,只需使用您的自定义标题视图而不是左右两侧带有自定义按钮的导航栏。

【讨论】:

    【解决方案2】:

    使用下面的代码。

     UIImage* searchImage = [UIImage imageNamed:@"search.png"];
     CGRect searchFraming = CGRectMake(30, 30, 25, 26);
     UIButton *searchButton = [[UIButton alloc] initWithFrame:searchFraming];
     [searchButton setBackgroundImage:searchImage forState:UIControlStateNormal];
     [searchButton addTarget:self action:@selector(searchButtonClicked)
               forControlEvents:UIControlEventTouchUpInside];
     [searchButton setShowsTouchWhenHighlighted:YES];
     UIBarButtonItem *searchButtonBarItem =[[UIBarButtonItem alloc] initWithCustomView:searchButton];
     [self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:locationButtonBarItem ,nil]];
    

    【讨论】:

      【解决方案3】:

      您可以使用视图调试(Debug View Hierarchy)来检查您的按钮在哪里消失了。只需单击调试/日志区域顶部的设备图标

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-05
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        • 1970-01-01
        相关资源
        最近更新 更多