2014-04-09 83 views
0

我有一種觀點認爲,如下所示:iOS版 - 調整大小UIScrollView的內容在運行時

View screenshot

紅色矩形(參照出口:self.redView)是把滾動視圖內(引用插座: self.scrollView)。當按下「更大」或「更小」按鈕時,紅色矩形展開/收縮其高度。

我的代碼是在這裏:

#import "s1cViewController.h" 

@interface s1cViewController() 

@end 

@implementation s1cViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidLayoutSubviews { 
    [self.scrollView setScrollEnabled:YES]; 
    [self.scrollView setContentSize:CGSizeMake(self.scrollView.frame.size.width, 600)]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)btnBiggerTouched:(id)sender { 
    [self resizeViewHeight:20]; 
} 

- (IBAction)btnSmallerTouched:(id)sender { 
    [self resizeViewHeight:-20]; 
} 

- (void)resizeViewHeight:(int)heightDelta { 
    [UIView animateWithDuration:0.2f animations:^{ 
     // Resize scrollview height 
     /*self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, self.scrollView.contentSize.height + deltaInputWrapperHeight);*/ 

     // Resize categoryInputView height 
     CGRect rect = self.redView.frame; 
     rect.size.height += heightDelta; 
     self.redView.frame = rect; 
    }]; 
} 

@end 

當我改變矩形的高度,然後滾動,高度變回原來的大小。我如何防止這種情況?

回答

2

也許你正在使用自動佈局。如果是這樣,那就是問題所在。你不能直接在自動佈局下改變視圖的框架,因爲如果你這樣做,當佈局出現時,它會馬上改變它(就像這裏發生的那樣)。你必須改變約束條件。

+0

有沒有一種方法來動畫? – user2562424

+1

當然可以。最簡單的就是動畫約束的變化。請在此處查看我對此主題的完整討論:http://www.apeth.com/iOSBook/ch17.html#_animation_and_autolayout – matt