使用类代理自定义UIButton的外观时UIBarItems似乎最初采用为UIButton设置的自定义属性。
使用Core Data从默认的Master / Detail项目开始。在AppDelegate中自定义UIButton的外观并运行应用程序。单击编辑按钮,然后单击MasterViewController导航栏中的完成按钮,并观察自定义消失。
[AppDelegate应用程序中的自定义外观代码:didFinishLaunchingWithOptions]:
UIImage *customBackground = [[UIImage imageNamed:@"yourcustomimage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5,5,5,5)];
[[UIButton appearance] setBackgroundImage:customBackground forState:UIControlStateNormal];
所有UIBarButtonItems都使用自定义背景
当“完成”按钮替换“编辑”按钮时,它正确没有自定义背景。
A similar question asks how to customize the Done button。我担心为什么这会发生在UIBarItem对象上,这些对象不是从UIButton继承的,并且想知道如何纠正它。
我怀疑代理继承和支持的属性,但我不知道如何纠正它。有什么建议吗?
答案 0 :(得分:1)
我的建议是在backgroundImage
中包含nil
重置为UINavigationBar
:
[[UIButton appearance] setBackgroundImage:customBackground forState:UIControlStateNormal];
[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:nil forState:UIControlStateNormal];