2011-11-04 78 views
1

我有一個UIScrollView作爲成員的UIView子類。在調整scrollView的框架大小時調整UIScrollView子視圖的大小不正確

我爲UIView調整大小並使用它調整滾動視圖的大小。所述的UIScrollView是一個無限的圖片庫(即,3次,作爲尋呼發生進出交換內容)

[UIView animateWithDuration: ... 

當我動畫的代碼,在動畫塊I有

myView.frame = someNewFrame; 

我認爲動畫將在插入動畫時插入中間幀大小。即,動畫的每一幀期間進行呼叫:

[myView setFrame: someIntermediateFrame]; 

所以我推翻MyView的的SETFRAME方法:

-(void)setFrame:(CGRect)frame 
{ 
    [super setFrame:frame]; 

    [self resizeSubviews]; 
} 

- (void)resizeSubviews 
{ 
    CGRect frame = self.bounds; 

    scrollView.frame = frame; 
    scrollView.contentSize = CGSizeMake(frame.size.width * 3.0, frame.size.height); // 3 pages 
    [scrollView setContentOffset:CGPointMake(frame.size.width, 0.0) animated:NO]; // set contentOffset to middlePage 
    [scrollView setNeedsDisplay]; // just in case. don't know if this is necessary. Currently not helpful. 

    frame.origin.x = 0.0; 
    frame.origin.y = 0.0; 

    pageZeroRect = frame; 
    self.pageZero.frame = frame; 

    frame.origin.x += frame.size.width; 
    pageOneRect = frame; 
    self.pageOne.frame = frame; 

    frame.origin.x += frame.size.width; 
    pageTwoRect = frame; 
    self.pageTwo.frame = frame; 
} 

否動畫出現比含有視圖其他。 scrollview(和子視圖)只是跳到它的最終值。

任何想法發生了什麼問題?這只是沒有意義。一切都看起來不錯,但是我不知道有什麼其他的東西在引擎蓋下發生。我已經對iOS進行了1.5年的編程,所以我沒有超級經驗,但也不是那麼愚蠢。

回答

1

我在一年後看到這個問題,一年更聰明,並會認爲答案是重寫我的UIView子類的layoutSubviews。

或將UIView的autoresizeSubviews屬性設置爲YES,並設置子視圖的正確自動識別掩碼。

0

您是否嘗試不覆蓋setFrame方法?

如果它不工作,那麼嘗試設置動畫塊中所有子視圖的最終幀。