Ios UIBarButtonItem外观不适用于大小可调的图像和CAPInset
问题:当使用设置时,未遵守UIBarButtonItem背景图像的缩放 我已经建立了一个项目,其中包含一些测试资产,用于实现我的目标。我有一张背景图片和两张我的uibarbuttoneim的图标图片。它们是: 背景(50x34): 图标(30x30): 这些图标是@2x版本(因此它们的大小是上面列出的两倍),但请放心,我在项目中也有标准资产(大小的一半) 创意,我知道!但问题是——我想在我的按钮背景图像上添加一些额外的填充物,以便图标只缩放背景图像的绿色部分。以下是我在AppDelegate中的代码:Ios UIBarButtonItem外观不适用于大小可调的图像和CAPInset,ios,uibarbuttonitem,scaling,appearance,Ios,Uibarbuttonitem,Scaling,Appearance,问题:当使用设置时,未遵守UIBarButtonItem背景图像的缩放 我已经建立了一个项目,其中包含一些测试资产,用于实现我的目标。我有一张背景图片和两张我的uibarbuttoneim的图标图片。它们是: 背景(50x34): 图标(30x30): 这些图标是@2x版本(因此它们的大小是上面列出的两倍),但请放心,我在项目中也有标准资产(大小的一半) 创意,我知道!但问题是——我想在我的按钮背景图像上添加一些额外的填充物,以便图标只缩放背景图像的绿色部分。以下是我在AppDelegat
UIImage *bgImage = [[UIImage imageNamed:@"testbutton2"] resizableImageWithCapInsets:UIEdgeInsetsMake(16, 20, 16, 20)];
[[UIBarButtonItem appearance] setBackgroundImage:bgImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
这对于第一个维吾尔人来说非常有效。但是,对于每个后续实例,图像的可调整大小部分都会被完全忽略。请查看:
如你所见,在第一屏上,一切都按计划进行。然而,每一个后续使用的uibarbuttonite是不正确的规模
现在,我确实解决了这个问题。我必须在每一个uibarbuttonite的实例上设置外观。为此,我创建了一个通用UIViewController超类,所有视图控制器都继承自该超类。在其中,我有以下代码:
- (void)viewDidLoad
{
[super viewDidLoad];
UIImage *bgImage = [[UIImage imageNamed:@"testbutton2"] resizableImageWithCapInsets:UIEdgeInsetsMake(16, 20, 16, 20)];
[self.navigationItem.rightBarButtonItem setBackgroundImage:bgImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[self.navigationItem.leftBarButtonItem setBackgroundImage:bgImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
}
这将产生以下结果:
所以我想我找到了解决这个问题的方法,但是我仍然有点困惑,为什么我最初的实现没有工作。在我看来,外观代理的用途是不必更改对象的每个单独实例的外观,这正是我最终必须做的。有人能解释一下这里发生了什么事吗?这是一个错误,还是我做错了什么