自定义UINavigationBar图形与重定向

时间:2012-06-15 14:10:26

标签: ios uinavigationbar

所以我使用此代码(ruby运动语法)在我的app委托中成功设置自定义图形(iOS 5):

navbar = UIImage.imageNamed "navbar.png"
navbutton = UIImage.imageNamed("navbutton.png").resizableImageWithCapInsets(UIEdgeInsetsMake(0,5,0,5))
navbackbutton = UIImage.imageNamed("navback.png").resizableImageWithCapInsets(UIEdgeInsetsMake(0,14,0,5))

UINavigationBar.appearance.setBackgroundImage(navbar, forBarMetrics:UIBarMetricsDefault)
UIBarButtonItem.appearance.setBackgroundImage(navbutton, forState:UIControlStateNormal, barMetrics:UIBarMetricsDefault)
UIBarButtonItem.appearance.setBackButtonBackgroundImage(navbackbutton, forState:UIControlStateNormal, barMetrics:UIBarMetricsDefault)

够容易。唯一的问题是,现在我正在添加重定向支持,当视图变为横向时,导航栏图像保持320px宽并重复以填充屏幕顶部的宽度...按钮重新定位,但导航栏不是没有动态拉伸......

我该如何解决这个问题?

我知道在方向完成后会调用 didRotateFromInterfaceOrientation(orientation),所以如果我需要调用某种UINavBarRefactor方法,我认为这是做这个的地方吗?

PS:如果它有用,我使用this tutorial来学习如何设置导航栏的样式。虽然,你不应该那么需要;我已经向你展示了上面教程中涉及的所有代码^^。

1 个答案:

答案 0 :(得分:0)

您可以使用其他条形指标进行横向模式。

UINavigationBar.appearance.setBackgroundImage navbar_image,
  forBarMetrics: UIBarMetricsDefault
UINavigationBar.appearance.setBackgroundImage navbar_image_landscape,
  forBarMetrics: UIBarMetricsLandscapePhone

其他选项也一样。