使用UIScrollView以编程方式缩放到较大图片的小区域

时间:2012-08-04 05:15:15

标签: iphone objective-c ios

我正在尝试让我的代码以编程方式放大到较大图片的一小部分区域。我稍后会添加点按代码,但现在我只想看看它有效。

此代码中的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];

2 个答案:

答案 0 :(得分:2)

问题是我没有为缩放定义委托 - 请参阅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。

答案 1 :(得分:0)

为UIScrollView设置maximumZoomScale和minimumZoomScale属性。