7

在此处输入图像描述

iOS 7.1 的发布带来了可访问性设置下的按钮形状的可用性。我注意到它们的外观在我的应用程序中可能不一致。大多数情况下,在使用 Interface Builder实现后,我得到了黑色背景。触摸按钮但未完全点击它会导致图像变灰。如何影响按钮形状的外观,以使它们看起来不会像纯黑色背景那样不合适,更像是附图中所示的灰色背景?在这种情况下,我不想使用自定义控件。UIBarButtonItem

4

3 回答 3

4

这个功能在 iOS 7.1 中似乎有点问题。似乎对外观影响最大的设置实际上是barTintColor您的UINavigationBar.

一些例子:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UINavigationBar appearance] setBarTintColor:[UIColor lightGrayColor]];

    return YES;
}

当我第一次启动时,后退按钮看起来不错:

在此处输入图像描述

然后当我去风景时,它看起来太暗了:

在此处输入图像描述

然后当我回到肖像时它仍然太暗:

在此处输入图像描述

当我使用[UIColor orangeColor]as时也会发生同样的事情barTintColor。首先没问题:

在此处输入图像描述

在风景中它变得一团糟:

在此处输入图像描述

然后它保持这种状态:

在此处输入图像描述

所以它显然看起来像 iOS 7.1 中的一个错误。可以做的一件事是为后退按钮设置背景图像。然后,此背景将显示“按钮形状”是否已激活。例子:

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];

所以最大的问题是:当“按钮形状”打开时,我们可以设置按钮背景图像barTintColor吗?

于 2014-05-02T15:14:25.910 回答
2

-[UINavigationBar setTranslucent:NO]似乎纠正了这一点。我不知道为什么,但确实如此。

唉,我们无法设置-[UINavigationBar setTranslucent:]使用UIAppearance,所以不得不将它洒在应用程序周围。

于 2014-09-23T10:34:54.203 回答
1

我刚刚遇到了一个类似于此处其中一个答案的评论中描述的问题,同时使用了barTint非常接近黑色的颜色。我的按钮形状背景的颜色与我的一些实例上的 barTint 几乎相同UINavigationBar,使它们几乎看不到(尤其是在未启用按钮时)。我追踪这些实例的差异是UINavigationBar实例barStyle属性的值。

barStyle设置为时,UIBarStyleDefault按钮形状将以背景颜色显示。barStyle设置为时,UIBarStyleBlack按钮形状将以浅色显示。您还可以在故事板中注意到这一点,因为导航栏中显示的标题将是默认样式的黑色和黑色样式的白色。

您可以在故事板/NIB 中更改每个导航栏的样式,或者您可以在设置外观代理的位置添加以下代码行(通常在 中application:didFinishLaunchingWithOptions:):

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
于 2015-02-03T20:27:35.250 回答