2010-11-01 62 views
0

在我的应用程序中,我在UIScrollView中使用了UIImageView,并使用了代码。UIScrollView放大问题?

- (void)viewDidLoad 

{ 

scrollV.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height); 

    [super viewDidLoad]; 

} 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 

{ 

    return imageView; 
} 

代码工作正常,但是当我放置的UIButton上滚动视图的ImageView的和我缩放scrollV之后,ImageView的变焦完美根据滚动视图但UIButton的和不被放大。

我想要当我放大imageview,我放在imageView上的按钮也放大相对于缩放imageView。

+0

@Jacob Relkin,你有什么想法吗? – Tirth 2010-11-01 06:25:00

回答

0

我成功找出写在了上面question.I的解决方案,

- (void)viewDidLoad 

{ 

    bgViewOfImage.contentStretch = CGRectMake(ImageView.frame.origin.x, ImageView.frame.origin.y, ImageView.frame.size.width, ImageView.frame.size.height); 
    scrollV.contentSize = CGSizeMake(bgViewOfImage.frame.size.width, bgViewOfImage.frame.size.height); 
    [super viewDidLoad]; 
} 


- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 

{ 

    return bgViewOfImage; 
} 

我创建一个层级中插入的主视图的UIView的,则返回该视图我拖动其他控件像UIImageview和UIButtons它现在完美的工作和缩放每个控件。

1

创建一个代理UIView实例作为scrollview的子视图,并将所有要放大的UI元素放入其中。然后从viewForZoomingInScrollView方法

0
CGSize imageView = [photo size]; 
    UIScrollView *scrollView = (UIScrollView *)[self view]; 
    [scrollView setDelegate:self]; 
    [scrollView setContentSize:photoSize]; 
    [scrollView setBackgroundColor:[UIColor blackColor]]; 
    [scrollView setShowsHorizontalScrollIndicator:NO]; 
    [scrollView setShowsVerticalScrollIndicator:NO]; 

    // Create the image view. 
    imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, photoSize.width, photoSize.height)]; 
    [imageView setImage:photo]; 
    [scrollView addSubview:imageView]; 

    // Configure zooming. 
    CGSize screenSize = [[UIScreen mainScreen] bounds].size; 
    CGFloat widthRatio = screenSize.width/photoSize.width; 
    CGFloat heightRatio = screenSize.height/photoSize.height; 
    CGFloat initialZoom = (widthRatio > heightRatio) ? heightRatio : widthRatio; 
    [scrollView setMaximumZoomScale:3.0]; 
    [scrollView setMinimumZoomScale:initialZoom]; 
    [scrollView setZoomScale:initialZoom]; 
    [scrollView setBouncesZoom:YES]; 

    // Center the photo. 
    CGFloat topInset = (screenSize.height - photoSize.height * initialZoom)/2.0; 
    if (topInset > 0.0) 
    { 
     [scrollView setContentInset:UIEdgeInsetsMake(topInset - 44.0, 0.0, 0.0, 0.0)]; 
    } 
} 

#pragma mark - 
#pragma mark UIScrollViewDelegate 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return imageView; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGSize screenSize = [[UIScreen mainScreen] bounds].size; 
    CGSize photoSize = [photo size]; 
    CGFloat topInset = (screenSize.height - photoSize.height * [scrollView zoomScale])/2.0; 
    if (topInset < 0.0) 
    { 
     topInset = 0.0; 
    } 

    [scrollView setContentInset:UIEdgeInsetsMake(topInset, 0.0, -topInset, 0.0)]; 
} 
+0

您应该重新安排您的人类阅读代码。 – AechoLiu 2010-11-01 09:34:16