具有自定义背景的UINavigationBar - 如何使正确的Bar Button可见

时间:2011-09-29 07:24:36

标签: objective-c ios uinavigationbar

我在RootViewController中定制了导航栏的背景(只是代码的一部分)

[navBar insertSubview:customBack atIndex:0];

我推送detailViewController并将活动指示符添加为rightBarButtonItem

UIActivityIndicatorView *actInd = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];

actInd.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;

self.activityIndicator = actInd;

[actInd release];

UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithCustomView:self.activityIndicator];

[self.navigationItem setRightBarButtonItem:barButton];

[barButton release];

问题是该指标不可见,但没有自定义背景,它可以正常工作。

6 个答案:

答案 0 :(得分:2)

我认为你可以更好地改变你的navigationBar背景。创建UINavigationBar的子类并添加:

- (void)drawRect:(CGRect)rect {
    UIImage * image = [UIImage imageNamed:@"MyNavigationBarBackground.png"];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextScaleCTM(ctx, 1.0, -1.0); // Otherwise the image is drawn upside-down
    CGContextDrawTiledImage(ctx, CGRectMake(0, 0, image.size.width, image.size.height), image.CGImage);
}

我这样做,我从不在任何按钮上添加问题:)

答案 1 :(得分:1)

Zoleas有正确的想法。如果您没有或不能使用子类,我认为您的问题是您在索引0处添加子视图,因此它位于导航栏中的其他视图之上,它可能隐藏了您的按钮。

答案 2 :(得分:0)

使用以下方式设置rightBarButtonItem

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@“Exit”style:UIBarButtonItemStylePlain target:self action:@selector(cancel)];

尝试此操作并检查背景位置

答案 3 :(得分:0)

活动指示器就在那里它没有被激活。尝试像这样动画:

[actInd startAnimating];

或者,如果您想让它保持可见,请设置hideWhenStopped属性,如下所示:

actInd.hidesWhenStopped = NO;

答案 4 :(得分:0)

您是否尝试更改UIActivityIndi​​catorView的来源?

或者在UIView中创建它并将此UIView添加到UIBarButtonItem。

我认为问题可能是元素的框架。

答案 5 :(得分:0)

通过这种方式,您可以解决问题: 创建活动指示器并添加到view1中 现在这个view1在这个view1的帮助下添加或创建导航栏。现在,当view1自动可见时,您将能够看到加载指示器。 只是疯狂地试试这个。