Jan*_*tis 4 cocoa hidden quartz-graphics uiimageview ios
点击UIView后,我隐藏它并使用UIView和Quartz drawRect初始化新对象.
- (void)viewTapped:(UITapGestureRecognizer *)recognizer {
self.vignetteView.hidden=true;
lupeItself = [[LoupeView alloc] initWithView:_pageView setZoomImageName:_zoomPageImageName setDelegate:self];
}
Run Code Online (Sandbox Code Playgroud)
上面的代码仅在延迟2秒后才隐藏UImageView.但如果最后一行(LoupeView alloc等)被删除,它会立即被隐藏.为什么?如何使视图立即隐藏?
该.hidden = true直到执行路径返回到主runloop变化不会成为可见.第二行可能会阻塞几秒钟,阻止这些更改发生(或者drawRect在管道中进一步停留很长时间).
最简单的解决方法是将第二行推迟到下一次runloop迭代:
self.vignetteView.hidden = YES;
// defer execution so the above changes are immediately visible
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
lupeItself = [[LoupeView alloc] initWithView:_pageView setZoomImageName:_zoomPageImageName setDelegate:self];
}];
Run Code Online (Sandbox Code Playgroud)
此外,一个小点:你应该使用常量YES和NO对BOOL性能和参数,而不是true和false.
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |