【发布时间】:2020-03-31 04:37:00
【问题描述】:
有谁知道一种方法可以使使用 resizableImageWithCapInsets 拉伸的 UIImage 响应明暗模式的变化?我当前的实现只在第一次绘制时考虑了暗/亮模式。
[thumbnailContainer addSubview:[self addTileBackgroundOfSize:thumbnailContainer.bounds]];
- (UIImageView *) addTileBackgroundOfSize:(CGRect)bounds {
UIImageView *backgroundView = [[UIImageView alloc] initWithFrame:bounds];
UIEdgeInsets insets = UIEdgeInsetsMake(10.0f, 49.0f, 49.0f, 10.0f);
UIImage *backgroundImage = [[UIImage imageNamed:@"UnivGalleryTile"] resizableImageWithCapInsets:insets];
backgroundView.image = backgroundImage;
return backgroundView;
}
我想我可以在 traitCollection 委托方法中重绘它们,但我希望有更好的方法让它们做出响应。
【问题讨论】:
-
不清楚您期望对亮/暗模式有什么样的“响应”。 UIImages 不会因为模式改变而神奇地改变。您必须将它们相互配对。您没有此图像的深色模式版本可与之配对。
-
我认为有暗模式版本,因为 Gergely 说图像对于当前模式是正确的,但不会自动切换。
-
显然,我在引用的图像资产中有浅色和深色版本;否则,期待任何形式的改变都会有点问题......
-
“很明显,我在引用的图像资产中有一个浅色和一个深色版本”是的,但是当你应用
resizableImage时,它会返回一个新的不同 UIImage 并且显然那个不在资产目录。这就是我要说的。 -
另一个想法:您需要在代码中设置插图还是它们总是相同的?如果没有,您可以尝试在资产目录中指定它们(在属性检查器中,在“切片”部分的底部)并检查自动暗模式更改是否会起作用。
标签: objective-c ios13 ios-darkmode