2012-07-03 31 views
3

我需要一个动态调整大小的UITextView,但右边缘在多次调整大小后向左侵入左侧,以便在文本视图中显示非常窄的文本带有大量空白区域。只需使用UITextView和UISlider即可进行简单设置。产生此行为的简单的示例的设置是与UISlider值范围从0-200,320宽度的一个UITextView和此代码:动态调整大小的越野车边距行为UITextView

- (IBAction)sliderValueChanged:(UISlider *)slider { 
    textView.frame = CGRectMake(0, 0, 320 - slider.value, 300); 
} 

有些东西我试图与autoResizingMask,contentMode,contentOffset被修补,和sizeToFit但他们都没有工作。这种奇怪的行为如何避免,或者它是一个错误?

回答

4

子类UITextView并覆盖layoutSubViews以将frame设置为CGRectZero然后回到原始帧大小。这不是优雅,但它的作品。

-(void) layoutSubviews 
{ 
    CGRect rect = [self frame]; 
    [self setFrame:CGRectZero]; 
    [self setFrame:rect]; 
} 
+1

确实有效。也适用:在设置需要的帧之前设置textView.frame = CGRectZero。 (在这种情况下之前:textView.frame = CGRectMake(0,0,320 - slider.value,300);)。 – krafter

+0

太棒了。一直在寻找这个! –