【问题标题】:Getting the actual height of a UITextView获取 UITextView 的实际高度
【发布时间】:2015-01-21 20:06:48
【问题描述】:

我有一个 NSAttributedString 被传递到 UITextView:

NSAttributedString *str = @"A really long string ... that continues for awhile";

字符串的长度是随机的,我想将它传递给 UITextView。

myTextView.attributedText = str;

我需要 UITextView 的宽度为 300,但是如何找到高度?

【问题讨论】:

    标签: ios iphone uitextview nsattributedstring


    【解决方案1】:

    如果我没记错的话,你可以这样做:

    [myTextView sizeToFit];
    

    然后从myTextView.bounds.size.height 检索高度。请注意,UITextViews 还会在边缘添加一些填充,因此您可能需要从高度中减去它。

    如果我弄错了,这里有一个不太干净但可行的替代方案:

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300.f, yourMaxHeight)];
    label.attributedText = myTextView.attributedText;
    label.numberOfLines = INFINITY;
    [label sizeToFit];
    
    CGFloat height = label.bounds.size.height;
    

    这当然不包括UITextView 填充。

    【讨论】:

    • 另外,sizeToFit 适用于所有UIControls(包括UIButtonUIImageView)。它会根据内容自动调整框架(不包括原点)。
    • 你的最大高度是多少
    • 实际上我有 UILabel 代码工作但想要一个没有填充的 UITextView
    • 这是一个您可以定义的CGFloat(例如100.f)。你试过[myTextView sizeToFit]吗?我认为它应该有效。
    • 如果您只想获取尺寸,请致电CGSize texViewSize = [myTextView sizeThatFits:CGSizeMake(300, CGFLOAT_MAX)]。这会给你高度,而无需实际调整 textview 的大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多