iPhone 6和6+中右侧按钮未出现

7

我正在尝试在我的选项卡栏的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像素的边框,因此没有出现占位符。


你尝试过清理项目和可能的派生数据吗? - Templar
你不应该持有一个弱引用。尝试使用 @property (nonatomic) UIButton *rightButton; - Desdenova
我已经为6和6+准备好了启动屏幕。 - Saad Chaudhry
@SaadChaudhry 我认为你应该重新考虑你的层次结构。通常选项卡控制器是顶级的。 - Christian Schnorr
是的,但在那之前我需要进行登录等操作。 - Saad Chaudhry
显示剩余4条评论
3个回答

1

1) 如果您正在使用自动调整大小子掩码,请检查您是否正确设置了“Autoresizing Mask”[在预览中进行检查]。

2) 如果您正在使用大小类,请确保您设置的约束条件 [在预览中进行检查]。

3) 第二件事,如果无论如何都不能工作,并且您很着急,只需使用自定义标头视图替换导航栏,并在右侧和左侧使用自定义按钮。


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

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接