resizableImageWithCapInsets OR stretchableImageWithLeftCapWidth:24 topCapHeight:15

时间:2012-08-21 13:28:25

标签: objective-c xcode uiimage deprecated

我知道可伸缩的...是旧的(并且已经弃用)..并且可以调整大小......是新的 - 但是这里有一个大问题......

新方法无法正常工作 - 在我的桌面测试中,我有很多延迟。

我不知道问题出在哪里但与“离开”的路线(我知道两者相同):

home = [[UIImage imageNamed:@"homebubble"] resizableImageWithCapInsets:UIEdgeInsetsMake(24.0f, 15.0f, 24.0f, 15.0f)];
away = [[UIImage imageNamed:@"awaybubble"] resizableImageWithCapInsets:UIEdgeInsetsMake(24.0f, 15.0f, 24.0f, 15.0f)];

产生问题 - 相信我你不需要我的孔代码,我测试了每一行,如果我一起评论该行,一切正常,但如果同时调用它,它就会滞后。

旧版的它完美无缺:

home = [[UIImage imageNamed:@"homebubble"] stretchableImageWithLeftCapWidth:24 topCapHeight:15];
away = [[UIImage imageNamed:@"awaybubble"] stretchableImageWithLeftCapWidth:24 topCapHeight:15];
它怎么可能?有人有经验吗? THX。

2 个答案:

答案 0 :(得分:3)

现在我知道原因了。

非常重要的是,“可调整大小的区域”必须是仅1px。在我的项目中,我有一个43x32像素的泡泡 - resizabel区域是-5x2px(-5因为uiedgeinsets是24,15,24,15) - 所以它总是无符号,aaaand,它必须是1px。经过更多的测试,这是解决方案。

回答。

答案 1 :(得分:0)

UIMakeEdgeInsetsMake以最高值开头:

UIEdgeInsets UIEdgeInsetsMake (
   CGFloat top,
   CGFloat left,
   CGFloat bottom,
   CGFloat right
);

这可能是新方法无法正常工作的原因。尝试:

home = [[UIImage imageNamed:@"homebubble"] resizableImageWithCapInsets:UIEdgeInsetsMake(15.0, 24.0, 15.0, 24.0)];
away = [[UIImage imageNamed:@"awaybubble"] resizableImageWithCapInsets:UIEdgeInsetsMake(15.0, 24.0, 15.0, 24.0)];

我不知道这是你迟到的原因。