在iOS 7.1中,如何通过辅助function设置启用Button Shapes的外观?
iOS 7.1的发布带来了在可访问性设置下的button形状的可用性。 我注意到,他们的外观可能会在我的应用程序不一致。 大多数情况下,在使用Interface Builder实现UIBarButtonItem
后,我会变黑。 触摸button但不完全敲击会导致图像变灰。 如何影响button形状的外观,使其看起来不像黑色背景那样显得不合适,更像是所附图像中所示的灰色背景? 在这种情况下,我不想使用自定义控件。
这个function似乎是在iOS 7.1中的一个小错误。 似乎最能影响外观的设置其实就是UINavigationBar
上的barTintColor
。
一些例子:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UINavigationBar appearance] setBarTintColor:[UIColor lightGrayColor]]; return YES; }
当我第一次启动时,后退button看起来很好:
然后当我去风景,看起来太黑暗:
然后,当我回到肖像时,它会保持太黑暗:
当我使用[UIColor orangeColor]
作为barTintColor
时,会发生同样的事情。 首先它很好:
在风景上它变得混乱:
然后保持这种状态:
所以它显然看起来像在iOS 7.1中的错误。 可以做的一件事就是设置后退button的背景图片。 这个背景会显示“Button Shapes”是否被激活。 例:
UIImage *backButtonImage = [[UIImage imageNamed:@"back_button.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0f, 17.0f, 0.0f, 1.0f) resizingMode:UIImageResizingModeStretch]; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone]; [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsLandscapePhone];
所以最大的问题是:我们可以设置button的背景图像,当“button形状”打开方式是独立于barTintColor
?
-[UINavigationBar setTranslucent:NO]
似乎纠正这一点。 我不知道为什么,但确实如此。
唉,我们不能设置-[UINavigationBar setTranslucent:]
使用UIAppearance
所以不得不撒在应用程序周围。
我遇到了类似于在这里的答案的评论中描述的问题,同时使用相当接近黑色的barTint
颜色。 我的button形状背景几乎与我的一些UINavigationBar
实例上的barTint颜色相同,使得它们几乎不可见(特别是当button未被启用时)。 我跟踪了这些实例中的差异,成为UINavigationBar
实例barStyle
属性的值。
当barStyle
设置为UIBarStyleDefault
,button形状将显示为背景颜色。 将barStyle
设置为UIBarStyleBlack
,button形状将显示为浅色。 您还可以在故事板中注意到这一点,因为导航栏中显示的标题将采用默认的样式显示为黑色,黑色显示为白色。
您可以在故事板/ NIB中更改每个导航栏的样式,或者您可以在设置外观代理(通常在application:didFinishLaunchingWithOptions:
添加以下代码行:
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];