在iOS 7.1中,如何影响通过辅助功能设置启用的按钮形状的外观?

在iOS 7.1中,如何影响通过辅助功能设置启用的按钮形状的外观?,ios,ios7.1,Ios,Ios7.1,iOS 7.1的发布在可访问性设置下提供了按钮形状。我注意到它们的外观在我的应用程序中可能不一致。在使用Interface Builder实现了UIBarButtonItem之后,我得到了一个黑色背景。触摸按钮但未完全点击会导致图像变为灰色。如何影响按钮形状的外观,使其看起来不会像具有纯黑背景和更像所附图像中所示的灰色背景那样不合适?在这种情况下,我不想使用自定义控件。此功能在iOS 7.1中似乎有点问题。对外观影响最大的设置实际上是UINavigationBar上的bartincolor 一些


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

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

一些例子:

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

    return YES;
}
当我第一次启动时,“后退”按钮看起来很好:

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

当我回到肖像画时,它就太暗了:

当我使用
[UIColor orangeColor]
作为
barTintColor
时,也会发生同样的情况。 首先很好:

在景观中,它会变得一团糟:

然后它就保持这种状态:

所以它看起来很像iOS 7.1中的一个bug。可以做的一件事是为后退按钮设置背景图像。该背景将显示“按钮形状”是否激活。例如:

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

所以最大的问题是:当“按钮形状”以独立于
BartinColor
的方式打开时,我们是否可以设置按钮背景图像?

-[UINavigationBar setTranslusive:NO]
似乎可以纠正这一问题。我不知道为什么,但确实如此


唉,我们无法使用
UIAppearance
设置
-[UINavigationBar setTranslucent:][/code>,因此不得不将其洒在应用程序上。

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

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

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


你真幸运,你的按钮颜色刚刚改变。。打开形状后,我的导航栏按钮完全不可见。这也是奇怪的行为,MrJ。现在似乎对这些按钮形状无能为力。这也发生在我的应用程序中——我怀疑这是iOS 7.1中的一个bug(我的UIBarButtonims是通过编程创建的。)很有趣。基于此,我注意到,如果你进入设置>常规>辅助功能,然后打开“降低透明度”-我的应用程序中所有按钮形状的问题都会消失。这不是一个真正的解决方案,但至少我可以告诉人们,如果他们需要使用按钮形状,可以尝试一下。(我尝试在应用程序中将导航栏/工具栏设置为非半透明,但这会导致一些布局问题……尽管我可能仍在探索该选项。)将
barStyle
设置为
UIBarStyleBlack
也解决了这个问题。我使用了非常暗的背景图像,而不是设置
bartincolor
。设置样式允许我继续使用暗图像。
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];