ScrollView中的TextView自动高度

时间:2012-01-18 21:16:53

标签: iphone objective-c ios

我正在尝试在Scrollview中插入TextView。 scrollview工作但TextView的内容未显示完整,因为出现了他们的滚动。我会在没有滚动的情况下显示TextView的完整内容。

enter image description here

file.h

@interface DetailViewController : UIViewController{
IBOutlet UITextView *detailTextView;
IBOutlet UIScrollView *scroller;    
}

@property(retain, nonatomic) IBOutlet UIScrollView *scroller;

-(void)setTextViewForRecipes: (Recipe *)theRecipe;

@end

file.m

@implementation DetailViewController
@synthesize  scroller;

-(void) setTextViewForRecipe:(Recipe *)theRecipe
{
 [detailTextView setText:theRecipe.detail]; 
}

- (void)viewDidLoad {
CGRect frame = detailTextView.frame;
frame.size.height = detailTextView.contentSize.height;
detailTextView.frame = frame;
[scroller setContentSize: CGSizeMake(280, detailTextView.frame.origin.y + detailTextView.frame.size.height + 10)];    
}

3 个答案:

答案 0 :(得分:2)

通过将viewDidLoad的帧高设置为detailTextView高度,您在contentSize中得到了正确的想法。但是在设置视图文本后需要这样做,当然你需要再次调整滚动条的contentSize

-(void) setTextViewForRecipe:(Recipe *)theRecipe
{
    detailTextView.text = theRecipe.detail;
    CGRect frame = detailTextView.frame;
    frame.size.height = detailTextView.contentSize.height;
    detailTextView.frame = frame;
    scroller.contentSize = CGSizeMake(280, 10 + CGRectGetMaxY(frame));
}

答案 1 :(得分:0)

UITextView是UIScrollView的子类,因此不应将其添加到滚动视图中。

答案 2 :(得分:0)

作为bandejapaisa pointed out,通常没有必要将UITextView包裹在UIScrollView内,因为textView可以单独滚动。

但是,如果你真的觉得这是必要的,你可以找到文本的大小,如果用某种字体呈现的话:

CGSize textSize = [text sizeWithFont:[UIFont systemFontOfSize:fontSizeOfYourTextView]
                   constrainedToSize:CGSizeMake(widthOfYourTextView, MAXFLOAT)
                       lineBreakMode:UILineBreakModeOfYourTextView];

这将找出高度。适应你的需求,但要注意:这有点麻烦,你可能需要做一些试验和错误才能达到预期的结果。