Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何将图像缩小到滚动视图的中心位置_Iphone - Fatal编程技术网

Iphone 如何将图像缩小到滚动视图的中心位置

Iphone 如何将图像缩小到滚动视图的中心位置,iphone,Iphone,在我的应用程序中,我需要用cam捕捉图像,然后将其传递给imageView,它用作ScrollView的子视图 要求是图像必须有1/4大小的缩小和3倍大小的放大 现在的问题是,当我缩小这个图像时,图像缩小了,但它没有保持在中心位置。它根据手指的触碰来设置其位置。 没有双击缩放,也不需要 下面是代码 - (void)viewDidLoad { [超级视图下载] UIImage* tmpImage = nil; tmpImage = [roomImage resizedImage:imageSc

在我的应用程序中,我需要用cam捕捉图像,然后将其传递给imageView,它用作ScrollView的子视图

要求是图像必须有1/4大小的缩小和3倍大小的放大

现在的问题是,当我缩小这个图像时,图像缩小了,但它没有保持在中心位置。它根据手指的触碰来设置其位置。 没有双击缩放,也不需要

下面是代码

- (void)viewDidLoad 
{ [超级视图下载]

UIImage* tmpImage = nil;
tmpImage = [roomImage resizedImage:imageScrollView.frame.size interpolationQuality:0];
imageView = [[UIImageView alloc] initWithImage:tmpImage];
imageView.contentMode = UIViewContentModeScaleAspectFit;

imageScrollView.delegate = self;
imageScrollView.canCancelContentTouches = NO;
imageScrollView.minimumZoomScale = 0.25;
imageScrollView.maximumZoomScale = 3.00;


imageScrollView.clipsToBounds = YES;

[imageView sizeToFit];
[imageScrollView addSubview:imageView];

imageScrollView.contentSize = imageView.frame.size;
    imageScrollView.contentMode = UIViewContentModeScaleAspectFit;  
    imageScrollView.contentOffset = CGPointMake(imageScrollView.frame.size.width/2, imageScrollView.frame.size.height/2);
imageScrollView.autoresizesSubviews = YES;
imageScrollView.autoresizingMask =  UIViewAutoresizingFlexibleHeight |        UIViewAutoresizingFlexibleWidth   |  
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | 
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;


CGFloat f,x,y;

if(tmpImage.size.height > tmpImage.size.width)
{
    f = (imageScrollView.frame.size.height/tmpImage.size.height);
}
else
{
    f = (imageScrollView.frame.size.width/tmpImage.size.width);
}

x = (imageScrollView.frame.size.width - tmpImage.size.width*f)/2;
y = (imageScrollView.frame.size.height - tmpImage.size.height*f)/2;

imageView.bounds = CGRectMake(x, y,tmpImage.size.width, tmpImage.size.height);
[imageView setNeedsDisplay];
[imageScrollView setZoomScale:f animated:YES];
[imageScrollView setNeedsDisplay];

jpgPath = nil;
[roomImage release];
roomImage = nil;
}

希望任何人都能帮我


提前感谢..,

如果我理解正确,您可以对UIScrollView进行子类化,并在layoutSubviews方法中使用类似于以下的内容,以保持其内容集中:

-(void)layoutSubviews {

[super layoutSubviews];

CGSize boundsSize = self.bounds.size;
CGRect contentViewFrame  = contentView.frame;

if (contentViewFrame.size.width < boundsSize.width) {

    contentViewFrame.origin.x = (boundsSize.width - contentViewFrame.size.width) / 2;

} else {

    contentViewFrame.origin.x = 0;

}

if (contentViewFrame.size.height < boundsSize.height) {

    contentViewFrame.origin.y = (boundsSize.height - contentViewFrame.size.height) / 2;

} else {

    contentViewFrame.origin.y = 0;

}

contentView.frame = contentViewFrame;
}

contentView变量是一个iVar,在您的情况下,它表示您希望在scrollView中显示的imageView。希望这有助于:-