UIScrollView setZoomScale无法正常工作?

8 cocoa-touch objective-c uikit

我正在使用我的UIScrollview来扩展底层的UIImageView.在我的视图控制器中我设置

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
 return myImageView;
}
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad方法中,我尝试将zoomScale设置为2,如下所示(注意在Interface Builder中设置了UIImageView和Image):

- (void)viewDidLoad {
 [super viewDidLoad];

 myScrollView.contentSize = CGSizeMake(myImageView.frame.size.width, myImageView.frame.size.height);
 myScrollView.contentOffset = CGPointMake(941.0, 990.0);
 myScrollView.minimumZoomScale = 0.1;
 myScrollView.maximumZoomScale = 10.0;
 myScrollView.zoomScale = 0.7;
 myScrollView.clipsToBounds = YES;
 myScrollView.delegate = self;

 NSLog(@"zoomScale: %.1f, minZoolScale: %.3f", myScrollView.zoomScale, myScrollView.minimumZoomScale);
}
Run Code Online (Sandbox Code Playgroud)

我尝试了一些这方面的变体,但NSLog总是显示1.0的zoomScale.

我把这个搞砸了的想法?

小智 21

我终于开始工作了.导致问题的原因是委托电话在最后.我现在把它搬了起来......我们走了.

新代码如下所示:

- (void)viewDidLoad {
 [super viewDidLoad];

 myScrollView.delegate = self;
 myScrollView.contentSize = CGSizeMake(myImageView.frame.size.width, myImageView.frame.size.height);
 myScrollView.contentOffset = CGPointMake(941.0, 990.0);
 myScrollView.minimumZoomScale = 0.1;
 myScrollView.maximumZoomScale = 10.0;
 myScrollView.zoomScale = 0.7;
 myScrollView.clipsToBounds = YES;
}
Run Code Online (Sandbox Code Playgroud)

  • 看起来这是由OS调用-viewForZoomingInScrollView引起的.如果您的委托是nil,则不会进行此调用,因此禁用了视图缩放视图. (11认同)