在scrollview中的UIImage太大了

时间:2015-03-06 10:32:30

标签: ios objective-c uiimage

我试图在scrollview中显示UIImage。图像的大小比滚动视图大得多,因此它仅显示图像的左上角。然后我可以缩放/重新排列图像以更好地适应,但我希望它能够显示整个图像,居中并适合内部。然后,用户可以根据需要进行缩放,但默认情况下应显示整个图像。

这是我的代码(下载图片):

UIImage *trackImg = [UIImage imageWithContentsOfFile:trackImagePath];

/* Scrollview! */
imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[imgView setImage:trackImg];
[[self scrImageViewer] addSubview:imgView];

_scrImageViewer.delegate = self;
_scrImageViewer.contentSize = trackImg.size;
_scrImageViewer.contentOffset = CGPointMake(trackImg.size.width/2, trackImg.size.height/2);
_scrImageViewer.minimumZoomScale = 1;
_scrImageViewer.maximumZoomScale = 4;
_scrImageViewer.zoomScale = 2;
_scrImageViewer.clipsToBounds = YES;

CGFloat newContentOffsetX = (_scrImageViewer.contentSize.width - _scrImageViewer.frame.size.width) / 2;
CGFloat newContentOffsety = (_scrImageViewer.contentSize.height - _scrImageViewer.frame.size.height) / 2;
_scrImageViewer.contentOffset = CGPointMake(newContentOffsetX, newContentOffsety);

同样,它仅显示图像的左上角。我想让它显示整个图像。

谢谢:)

1 个答案:

答案 0 :(得分:0)

screenshot

在此图像中,您可以看到一个小的scrollView(该正方形是滚动视图的大小),内部有一个非常大的图像(高度为1280,滚动视图仅为100)。您需要做的唯一事情是将图像的约束添加到其superview(scrollView),在我的情况下,我添加了全部0(顶部,前导,尾部和底部),imageView模式是Center。当然,您需要将滚动视图中的约束添加到其superView,在本例中为View。

如果您还需要以编程方式添加imageView,如果您无法使用插座,则可以对代码进行这些更改,但我强烈建议您使用故事板解决方案:

imgView = [[UIImageView alloc] initWithImage:trackImg];
[self.scrImageViewer addSubview:imgView];
[imgView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.scrImageViewer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:nil views:@{ @"view": imgView }]];
[self.scrImageViewer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]|" options:0 metrics:nil views:@{ @"view": imgView }]];
[self.view layoutIfNeeded];