我有一个带有自定义UINavigationBar的NavigationController:
@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect
{
UIImage *image = [UIImage imageNamed: @"banner.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
我允许使用shouldAutorotateToInterfaceOrientation.
当我正在轮换时,我想用banner.png
更改banner_port.png
我该怎么做?
答案 0 :(得分:0)
[UIDevice currentDevice] .orientation会告诉你设备认为它是哪种方式......
你可以在它给你的值上做if或切换。
答案 1 :(得分:0)
您可以使导航栏对象监听具有属性“orientation”的全局UIDeviceOrientationDidChangeNotification,并在事件发生时进行必要的更改。
答案 2 :(得分:0)
另见Custom UINavigationBar Background
我同意Dave DeLong的意见 - 压倒drawRect是不明智的,它可能有一天会破裂。此外,您的类别drawRect
会替换原始的drawRect - 您无法选择调用super来获取默认功能。
请注意,如果您监听UIDeviceOrientationDidChangeNotification的更改,则需要注意有六个设备方向(通常为四个,加上面朝上和面朝下)。
经常看到写得不好的代码,它不承认面朝上和面朝下设备方向的可能性。
N.B。您还可以访问用户界面的当前状态栏方向 - 这不一定与UIDeviceOrientation相同!