在iOS的uinavigationbar中添加uibutton时按钮重叠



我在更改viewcontroller时遇到问题,uinavigationbar中添加的uibutton已经重叠。我尝试了以下代码:

    int submit_x = 170 ;
    int refresh_x =100;
    UIButton *refreshbtn=[UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *imageRefresh = [UIImage imageNamed:@"Refresh.png"];
    [refreshbtn setImage:imageRefresh forState:UIControlStateNormal];
    [refreshbtn setFrame:CGRectMake(refresh_x, 7, imageRefresh.size.width, imageRefresh.size.height)];
    [refreshbtn addTarget:self action:@selector(refreshClicked:) forControlEvents:UIControlEventTouchUpInside];
    refreshbtn.backgroundColor = [UIColor clearColor];
    [self.navigationController.navigationBar addSubview:refreshbtn];

我在ViewDidAppear()中添加了上面的代码。如何解决此问题?

我相信您想将UIBarButtonItem而不是UIButton添加到导航控制器中

    UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshClicked:)];
    self.navigationController.navigationItem.rightBarButtonItem = refreshButton;

试试看,让我知道你追求的是什么。

//扩展

    UIButton *refreshbtn=[UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *imageRefresh = [UIImage imageNamed:@"Refresh.png"];
    [refreshbtn setImage:imageRefresh forState:UIControlStateNormal];
    [refreshbtn setFrame:CGRectMake(refresh_x, 7, imageRefresh.size.width, imageRefresh.size.height)];
    [refreshbtn addTarget:self action:@selector(refreshClicked:) forControlEvents:UIControlEventTouchUpInside];
    refreshbtn.backgroundColor = [UIColor clearColor];
    UIBarButtonItem *yourButton = [[UIBarButtonItem alloc] initWithCustomView: refreshbtn];
    self.navigationItem.rightBarButtonItem = yourButton;

您应该将UIButton直接添加到导航控制器中。

//扩展

创建另一个UIBarButtonItem(与上面的方法相同),然后像这样添加:

self.navigationItem.rightBarButtonItems = @[yourButton, yourAnotherButton];

它应该与iOS6和7 配合良好

相关内容

最新更新