2012-05-25 55 views
0

我有一個UIImageView元素作爲我的主UIScrollView元素的子視圖。 我希望圖像始終填滿整個屏幕,但我可以拖動邊緣太遠,以便黃色的「背景」變得可見。 如果我擡起手指,圖像會「反彈」並正確填充屏幕。UIScrollView - 阻止UIImageView作爲UIScrollView的子視圖被拖出屏幕

我想阻止這種拖動圖像的屏幕。 但是我確實希望圖像一旦從「安全區域」拖出就會反彈回來。

這是我的滾動型初始化:

- (id)initWithFrame:(CGRect)frame{ 
self = [super initWithFrame:CGRectMake(0, 0, frame.size.height, frame.size.width)]; 
if (self) { 
    [self initImageValues]; 

    self.showsVerticalScrollIndicator = NO; 
    self.showsHorizontalScrollIndicator = NO; 
    self.bouncesZoom = YES; 
    self.decelerationRate = UIScrollViewDecelerationRateFast; 
    self.delegate = self; 
    self.backgroundColor = [UIColor yellowColor]; 
    self.minimumZoomScale = 1.0; 
    self.maximumZoomScale = 2.0; 
    [self setCanCancelContentTouches:YES]; 
    self.clipsToBounds = YES; 

    // Load Image 
    imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]]; 
    [self addSubview:imageView]; 

    [self setContentSize: CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)]; 

    // Set bigger "bounce" zone (safety area) 
    self.contentInset=UIEdgeInsetsMake(-SAFETY_ZONE,-SAFETY_ZONE,-SAFETY_ZONE,-SAFETY_ZONE); 

    self.scrollEnabled = YES; 

} 
return self;} 

回答

2

使用這些委託方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

ŧ如果偏離「安全區域」,則讀取偏移量並返回。

可能是你需要從其他的UIScrollView的委託方法,雖然,但像這樣的解決辦法應該解決您的問題:)

+0

這正是我所錯過的。我現在已經包含了一些if檢查圖像是否會離開屏幕,然後設置圖像位置,以便圖像在屏幕上顯示。再加上反彈仍然有效。很好,謝謝! – Mauin

+0

沒問題,祝你的項目好運! –

0

嘗試其bounces屬性設置爲NO

+0

我有點想那反彈,當我離開了圖像的「安全區」。我只是不希望「反彈」是那麼大,我可以將圖像拖出屏幕。 – Mauin

0

試穿滾動視圖設置反彈:

self.bounces = NO; 
+0

好的,反彈轉向解決了問題。但是當我離開我的圖像「安全區域」時,我有點想要反彈。我只是不希望能夠拖動圖像到目前爲止,它會離開屏幕的一部分。 – Mauin

0

試試這個: **

self.scrollView.maximumZoomScale = 1.0; 
self.scrollView.minimumZoomScale = 1.0; 

**

+0

這不起作用。我不確定圖像的比例在拖動圖像時如何影響「反彈」。 此方法也無法縮放圖像。 – Mauin