根据可用的文本字体大小和字体名称初始化 UITextView

Posted

技术标签:

【中文标题】根据可用的文本字体大小和字体名称初始化 UITextView【英文标题】:Initializing UITextView based on the available text font size and font name 【发布时间】:2013-01-26 04:59:47 【问题描述】:

这是我尝试过的,

 UITextView *_textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 300, 10)];
    NSString *str = @"This is a test text view to check the auto increment of height of a text     view. This is only a test. The real data is something different.";
    _textView.text = str;


CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;//Here i am adjusting the textview

[self.view addSubview:_textView];



Basically after fitting the text into textview,scrolling is enable,but i cannot view the content inside the textview without scrolling the textview.I do want to initialize the UITextView frame size based on the text size,font name etc.

感谢任何解决方案。谢谢。

【问题讨论】:

即使你想禁用滚动? @PKCoder。这不是主要目标,但如果我也这样做会很好 【参考方案1】:
NSString *str = @"This is a test text view to check the auto increment of height of a text     view. This is only a test. The real data is something different.";
UIFont * myFont = [UIFont fontWithName:@"your font Name"size:12];//specify your font details here

//然后计算上面文字所需的高度。

CGSize textviewSize = [str sizeWithFont:myFont constrainedToSize:CGSizeMake(300, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];

//根据你从上面得到的高度初始化你的textview

UITextView *_textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, textviewSize.width, textviewSize.height)];
_textView.text = str;
[self.view addSubview:_textView];

而且您还想禁用 textview 中的滚动,然后参考这个。

正如 William Jockusch 在his answer here 中所说:

您可以通过以下方法禁用几乎所有滚动 进入你的 UITextView 子类:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 
  // do nothing

我说“几乎”所有滚动的原因是即使使用上述内容, 它仍然接受用户滚动。尽管您可以通过以下方式禁用它们 将 self.scrollEnabled 设置为 NO。

如果你只想禁用一些滚动,然后制作一个 ivar,让我们调用 它acceptScrolls,决定是否允许滚动或 不是。然后你的 scrollRectToVisible 方法可以如下所示:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 
   if (self.acceptScrolls)
     [super scrollRectToVisible: rect animated: animated];

【讨论】:

错过了一些东西。 .它现在就像一个魅力。 .非常感谢 复制他人的话时,请提供适当的引用。我已经在您上面的回答中做到了这一点,但请确保您以后也这样做。

以上是关于根据可用的文本字体大小和字体名称初始化 UITextView的主要内容,如果未能解决你的问题,请参考以下文章

如何根据文本字段的大小调整字体大小?

iOS-UILabel根据文本字体大小计算label宽度;以及自适应高度

如何将 TextBlock(字体大小)增大/缩小到 WPF 中的可用空间?

css(字体,文本,边距,边框,阴影,背景,渐变,多重背景,列表)

WPF TextBlock 字体调整大小以填充网格中的可用空间

WPF 格式化文本:计算字体大小以填充可用高度空间