使用UIScrollView可编程放大到较大图片的小区域



我正试图让我的代码以编程方式放大到大图的一个小区域。我稍后会添加tap代码,但现在我只想看到它工作。

这段代码中的zoomToRect完全没有任何作用,我只是不明白为什么。当我构建它时,图像只是位于0,0原点。

我尝试过使用:

setContentOffset和scrollRectToVisible,这两种方法都很好——图像移动到指定的坐标。但这两者都不是我想要的,因为我需要移动和缩放图像,而不仅仅是移动它

但是zoomToRect完全拒绝做任何事情。我现在已经读了大约50页关于这方面的例子和教程,但没有一件该死的事情奏效。我不知道为什么要把头发扯掉。很明显,我遗漏了一些非常基本或重要的观点。

UIImage *myFirstImage = [UIImage imageNamed:@"manga_page.jpg"];
UIImageView *myFirstImageView = [[UIImageView alloc] initWithImage:myFirstImage];
[myFirstImageView setFrame:CGRectMake(0, 0, myFirstImage.size.width, myFirstImage.size.height)];

UIScrollView *myFirstScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[myFirstScrollView setContentSize:CGSizeMake(myFirstImage.size.width, myFirstImage.size.height)];
[myFirstScrollView addSubview:myFirstImageView];
[self.view addSubview:myFirstScrollView];
[myFirstScrollView zoomToRect:CGRectMake(300, 300, 300, 300) animated:YES];

问题是我没有定义缩放的委托-请参阅此处的viewForZoomingInScrollView(页面底部):

https://developer.apple.com/library/ios/documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html#//apple_ref/occ/intfm/UIScrollViewDelegate/viewForZoomingInScrollView

当我切换到Xamarin框架时,Objective C中没有代码片段。然而,C#的解决方案如下:

scrollView.ViewForZoomingInScrollView = delegate (UIScrollView sv) { return imageView; };

其中imageView是包含要滚动的图像的UIImageView。

为UIScrollView设置最大缩放比例和最小缩放比例属性。

最新更新