UIButton 图像从 URL 加载后淡入淡出
Posted
技术标签:
【中文标题】UIButton 图像从 URL 加载后淡入淡出【英文标题】:Fade in UIButton images after they load from URL 【发布时间】:2013-10-08 08:30:03 【问题描述】:我正在使用 AFNetworking 方法将我的图像加载到 UIBUttons 中。我的目标是在加载后显示带有淡入淡出动画的图像。
[leftBtn setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:leftImageUrl]] placeholderImage:nil forState:UIControlStateNormal success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
[UIView animateWithDuration:0.4 animations:^() leftBtn.alpha = 1;completion:^(BOOL finished)];
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
//
];
Capturing 'leftBtn' strongly in this block is likely to lead to a retain cycle
我明白为什么我会收到上述警告,并正在寻找一种聪明的方法来解决它。 谢谢
【问题讨论】:
【参考方案1】:你应该使用类似的东西:
__weak UIButton *weakLeftBtn = leftBtn;
[leftBtn setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL
URLWithString:leftImageUrl]]
placeholderImage:nil
forState:UIControlStateNormal
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
[UIView animateWithDuration:0.4 animations:^()
weakLeftBtn.alpha = 1;
completion:^(BOOL finished)];
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
// if something went wront
];
更新:在您的代码中,leftBtn
指向一个块,而该块又指向 leftBtn
。这会导致一个保留周期。在我的代码中leftBtn
指向块,但块指向weakLeftBtn
,它用__weak
限定符声明,这意味着只要它还活着而不保持牢固的关系,它就会正确指向leftBtn
用它。所以在这种情况下leftBtn
“拥有”该块,但该块不“拥有”任何本地或实例变量。
关于这个主题的一些值得阅读的文章:
Transitioning to ARC Release Notes Working with Blocks Practical Memory Management【讨论】:
谢谢。所以这样做我只是告诉编译器这个 UIButton 很弱,他没有什么可担心的?另一个问题,除了上述之外,我什么时候使用__?谢谢 @Sha:我刚刚修改了答案。 很好的答案。再次感谢!以上是关于UIButton 图像从 URL 加载后淡入淡出的主要内容,如果未能解决你的问题,请参考以下文章