Ale*_*lin 3 cocoa-touch ios ios5
我的应用程序有一个59(虚拟)像素高的自定义导航栏,而不是标准Apple UINavigationController UINavigationBar的44像素.我正在应用程序启动期间通过以下调用将样式应用于栏:
UIImage *navBarImage = [UIImage imageNamed:@"navigation-bar.png"];
[[UINavigationBar appearance] setBackgroundImage:navBarImage
forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
这导致的问题是,它基本上是在标准导航栏原点的屏幕顶部拍摄的图像.底层导航栏不知道其大小已更改.这使得内容视图(推入导航堆栈的视图)在自定义栏下显示15个像素.
我找不到改变UINavigationController导航视图的大小和位置的方法.
这种定制的最优雅方式是什么?以下(不优雅)有效,但是因为在渲染视图后应用了操作,位置的移位和调整大小对用户来说非常明显,看起来非常业余:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGRect frame = self.view.frame;
self.view.frame = CGRectMake(frame.origin.x, frame.origin.y + 15, frame.size.width, frame.size.height - 15);
}
Run Code Online (Sandbox Code Playgroud)
推送到导航堆栈的所有控制器都在UIViewController的子类中,该子类实现上述方法.
谢谢你!
我知道这是旧的,但既然你没有得到答案,我想我可能会发布我是如何解决这个问题的.
我发布了一个类似的问题,但除了你的问题还有其他问题.我被指出了一个关于如何设置UINavigationBar高度的问题,而最佳答案对我来说非常合适.用户建议创建自定义UINavigationBar类别并覆盖-sizeThatFits方法.它解决了您的应用程序无法识别UINavigationBar增加高度的问题,以及UINavigationBar中的另一个视图问题,在默认的44px底线下方无法点击.
| 归档时间: |
|
| 查看次数: |
9776 次 |
| 最近记录: |