gpt4 book ai didi

iphone - 缩小时 UIImageView 在屏幕上居中

转载 作者:行者123 更新时间:2023-12-03 18:50:53 25 4
gpt4 key购买 nike

我在 UIScrollView 中有一个 UIImageView。我希望用户可以缩放和导航图像。

这是我的工作代码:

//img is the UIImageView
//scroller is the UIScrollView

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return img;
}
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *image = [UIImage imageNamed:@"map_screen.png"];
img = [[UIImageView alloc] initWithImage:image];
scroller.delegate = self;
scroller.autoresizesSubviews = YES;
scroller.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
scroller.contentSize = img.frame.size;
scroller.scrollEnabled = YES;
scroller.directionalLockEnabled = NO;
scroller.userInteractionEnabled = YES;

CGSize ivsize = img.frame.size;
CGSize ssize = scroller.frame.size;

float scalex = ssize.width / ivsize.width;
float scaley = ssize.height / ivsize.height;
scroller.minimumZoomScale = fmin(1.0, fmax(scaley, scalex));
scroller.zoomScale = fmin(1.0, fmax(scalex, scaley));
[scroller addSubview:img];
img.userInteractionEnabled = YES;
}

一切正常,但发生了这种情况:最小缩放是屏幕的高度。我的图像的宽度大于高度,所以我希望最小缩放是宽度。

如果我写

scroller.minimumZoomScale = fmin(1.0, scalex);

有效,但是当用户缩小时,图像不在屏幕中央,而是在顶部。

我尝试过这样的事情

CGPoint scrollCenter = [scroller center];
[img setCenter:CGPointMake(scrollCenter.x, scrollCenter.y)];

img.center = scroller.center;

但使用此解决方案,图像不完全可滚动,如果我缩小,它会再次停留在屏幕顶部,但不完全可见!

我可以做什么来修复它?

最佳答案

您必须在使用scrollViewDidZoom委托(delegate)函数进行缩放时手动执行此操作...类似

- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{

// center the image as it becomes smaller than the size of the screen
CGSize boundsSize = scrollView.bounds.size;
CGRect frameToCenter = imageView.frame;

// center horizontally
if (frameToCenter.size.width < boundsSize.width)
{
frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2;
} else {
frameToCenter.origin.x = 0;
}

// center vertically
if (frameToCenter.size.height < boundsSize.height)
{
frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2;
} else {
frameToCenter.origin.y = 0;
}

imageView.frame = frameToCenter;

}

关于iphone - 缩小时 UIImageView 在屏幕上居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5834312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com