右侧的按钮没有出现在iphone 6和6+中

时间:2015-06-29 08:21:16

标签: ios objective-c navigationbar rightbarbuttonitem uitabview

我正在尝试在我的标签栏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");

}

您也可以在图片中看到enter image description here

也是iphone 6的清晰图像 enter image description here

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

3 个答案:

答案 0 :(得分:1)

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

2)如果您使用的是Size类,请确保您已设置的约束,[签入预览]。

3)第二件事,如果它不以任何方式工作而且你很着急,只需使用自定义标题视图而不是左右自定义按钮的导航栏。

答案 1 :(得分:0)

使用以下代码。

 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]];

答案 2 :(得分:0)

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

即可