2015-10-19 32 views
0

我在UIView中添加了UITextViewUIView有一些高度取決於屏幕尺寸。 UITextView可以有更多或更少的文字。所以我想讓UITextView的高度動態化,所以如果文字多了,它應該有更多的高度,但它應該小於主視圖的高度。如果文字少,那麼它的高度應該較小。ios中textview的動態高度?

+0

你不想讓textview滾動嗎? –

+0

不,我不想滾動 – Techiee

+0

使用故事板? –

回答

5

大小嚐試一個UITextView它的內容編程:

UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; 
    [textView setDelegate:self]; 
    [textView setText:@"your long text"]; 
    [textView setScrollEnabled:NO]; 
    [self.view addSubview:textView]; 

    CGFloat fixedWidth = textView.frame.size.width; 
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)]; 
    CGRect newFrame = textView.frame; 
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height); 
    textView.frame = newFrame; 
-1

與此

-(void)dynamicTextSize{ 
UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(200, 300, 200, 30)]; 
textView.center = self.view.center; 
[self.view addSubview:textView]; 

NSString *string = @"This is pour text.a hjajksdkja kajhdsjk akjdhs jakhd skjahs ajkdhsjkad hskja akjdhs ajkhdjskar"; 
textView.text = string; 

//UIFont *font = [UIFont fontWithName:@"Arial" size:16.0f]; 
NSDictionary *attrDict = [NSDictionary dictionaryWithObjectsAndKeys:textView.font, NSFontAttributeName, nil]; 

textView.backgroundColor = [UIColor lightGrayColor]; 

CGRect frame = [textView.text boundingRectWithSize:CGSizeMake(textView.frame.size.width, 10000) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin attributes:attrDict context:nil]; 

CGRect mFrame = textView.frame; 
mFrame.size.width = frame.size.width; 
mFrame.size.height = frame.size.height; 
textView.frame = mFrame; 

//NSLog(@"frame2:%@",NSStringFromCGRect(textView.frame)); 
} 
+0

什麼是** attrdict **? – Techiee

+0

如何處理** size **。在哪裏設置? – Techiee

+0

如何設置大小? – Techiee

0

如果使用textview與滾動禁用顯示文本的多線,它只不過是一個UILabel更。我建議你爲此目的使用UILabel

在情節串連圖板,設置的約束如下:

enter image description here

並設置換行符作爲自動換: enter image description here

+0

請注意約束值是根據我的需要給出。您可以根據您的需要修改它們 –

+0

用於文本環繞圖像我使用textview作爲標籤 – Techiee

+0

您甚至可以將文本包裝在uilabel中,唯一的區別是標籤是隻讀的而文本視圖是可編輯的。 –

0

同第一個答案,但在夫特4:

let screenSize = UIScreen.main.bounds 
let textView = UITextView.init(frame: CGRect(x: 1, y: 40, width: screenSize.width, height: screenSize.height)) 
textView.delegate = self as? UITextViewDelegate 
textView.isScrollEnabled = false 
view.addSubview(textView) 

let fixedWidth = textView.frame.size.width 
let newSize: CGSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat(MAXFLOAT))) 
var newFrame = textView.frame 
newFrame.size = CGSize(width: CGFloat(fmaxf(Float(newSize.width), Float(fixedWidth))), height: newSize.height)