tcu*_*rdt 0 iphone uiscrollview ios
我希望平移到我的某个点UIScrollView,同时这样做也可以放大到最大缩放级别.在这里省略缩放矩形计算,似乎zoomToRect需要调用两次来缩放和平移我想要的位置.
[self performSelector:@selector(zoom) withObject:nil afterDelay:1.0];
[self performSelector:@selector(zoom) withObject:nil afterDelay:2.0];
[self performSelector:@selector(zoom) withObject:nil afterDelay:3.0];
- (void) zoom
{
[self.imageScrollView zoomToRect:(CGRect){ 913.556, 0, 320, 465 }
animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
第一个zoom调用放大,但第二个调用实际平移到正确的位置.一旦处于正确的位置,第三个呼叫什么都不做 - 这是我已经预期的第二个呼叫.
这有什么问题?根据Apple文档,我希望它能够在第一次调用时工作.
github上提供了一个示例项目.
小智 5
"问题"是被覆盖的layoutSubviews,它以图像视图为中心.这会在第一次调用后影响结果帧的位置
[self.scrollView zoomToRect:(CGRect){ 913.556, 0, 320, 465 } animated:YES];
Run Code Online (Sandbox Code Playgroud)
我做了一些测试,发现了一个快速的黑客,也许这会引导您找到符合您需求的解决方案:
1.)覆盖zoomToRect:表示您正在进行自动缩放:
- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated {
self.automaticZooming = YES;
[super zoomToRect:rect animated:animated];
}
Run Code Online (Sandbox Code Playgroud)
2.)在layoutSubviews中调整图像视图取决于 automaticZooming状态:
- (void)layoutSubviews
...
if (!self.automaticZooming) {
imageView.frame = frameToCenter;
}
...
}
Run Code Online (Sandbox Code Playgroud)
3.)完成缩放后重置自动缩放状态:
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
self.automaticZooming = NO;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |