我遇到了UIScrollView的缩放功能问题。它根本不起作用。我已经阅读了类似的帖子,其他人使用的修补程序似乎都不适合我。我的viewController引用了UIScrollViewDelegate,我有一个UIScrollView的实例变量,我声明我的子视图是UIScrollView的委托对象,我有(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
的实现。这是我的loadView函数:
(void)loadView
{
CGRect frame = CGRectMake(0, 0, 320, 480);
scrollView = [[UIScrollView alloc] initWithFrame:frame];
[scrollView setScrollEnabled:YES];
CGRect reallyBigRect;
reallyBigRect.origin = CGPointZero;
reallyBigRect.size.width = frame.size.width * 2.0;
reallyBigRect.size.height = frame.size.height * 2.0;
[scrollView setContentSize:reallyBigRect.size];
CGPoint offset;
offset.x = frame.size.width * 0.5;
offset.y = frame.size.height * 0.5;
[scrollView setContentOffset:offset];
[scrollView setMinimumZoomScale:1];
[scrollView setMaximumZoomScale:5];
[scrollView setUserInteractionEnabled:YES];
self.scrollView.delegate = self;
self.view = scrollView;
views = [[HypnosisView alloc] initWithFrame:reallyBigRect];
[scrollView addSubview:views];
[self.view setBackgroundColor:[UIColor clearColor]];
}
此代码允许我滚动得很好但缩放不存在。
希望听到某人的意见, 戴夫
答案 0 :(得分:2)
您是否尝试过实施scrollViewDidEndZooming:withView:atScale:
?
来自Apple's UIScrollView documentation:
滚动视图还可以处理内容的缩放和平移。当用户进行捏合或捏合手势时,滚动视图调整内容的偏移和缩放。当手势结束时,管理内容视图的对象应该根据需要更新内容的子视图。 (请注意,手势可以结束,手指仍然可以关闭。)当手势正在进行时,滚动视图不会向子视图发送任何跟踪调用。
UIScrollView
类可以拥有必须采用UIScrollViewDelegate
协议的委托。 要缩放和平移工作,代表必须实现viewForZoomingInScrollView:
和 scrollViewDidEndZooming:withView:atScale:;此外,最大(maximumZoomScale
)和最小(minimumZoomScale
)缩放比例必须不同。
答案 1 :(得分:0)
要启用缩放,需要做两件事:
使用UIScrollViewDelegate
协议并实施viewForZoomingInScrollView:UIScrollView -> UIView?
。将滚动条委托设置为实现类。这期望UIView的返回被缩放。所以一个简单的例子就是:
@IBOutlet var myZoomableImageView: UIImageView?`
override func viewDidLoad() {
myScrollView?.delegate = self
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return myZoomableImageView
}
使用UIScrollView.minimumZoomScale
和UIScrollView.maximumZoomScale
将最大和最小缩放设置为滚动视图,如下所示:
myScrollView?.minimumZoomScale = 1.0
myScrollView?.maximumZoomScale = 3.0
`
答案 2 :(得分:0)
此帖子highlights the three things that are necessary to enable zooming:
- 您需要一个实现
UIScrollViewDelegate
并在您的delegate
实例上设置为UIScrollView
的委托- 在您的代表上,您必须实现一种方法:
viewForZoomingInScrollView:
(必须返回内容视图 您对缩放感兴趣)。您也可以实施scrollViewDidEndZooming:withView:atScale:
可选。- 在您的
UIScrollView
实例上,您必须将minimumZoomScale
和maximumZoomScale
设置为不同的(它们 默认为1.0)。
从您的示例代码中,我们可以看到#1和#3已实现。因此,问题2很可能是问题所在。仔细检查用于实现viewForZoomingInScrollView
方法的代码,或者理想情况下将其包含在上面的代码中。