2010-09-01 62 views
1

在我的應用程序中,我需要用cam捕捉圖像,然後將其傳遞給imageView,該圖像用作ScrollView的子視圖。如何縮小圖像並保持它在滾動視圖的中心

要求是「圖像必須方便縮小的1/4尺寸和放大的尺寸的3倍」。

現在的問題是,當我縮小這張圖片時,圖片縮小了,但它並沒有保持在中間的位置。它會根據手指觸摸設置其位置。 (沒有雙抽頭變焦是存在的,而不是必需的也行)

下面是代碼..,

- (void)viewDidLoad 

{ [超級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; 

}

希望任何人能幫助我..,

在此先感謝..,

回答

0

如果我理解你正確地,你可以繼承的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。希望這有助於:-)

相關問題