我需要计算UITextField
中的行数。
我的UITextField
有一个UIBezierPath
数组,用于在UIImage
上绘制文字。
UIBezierPath *rect = [UIBezierPath bezierPathWithRoundedRect:_image.frame cornerRadius:0];
[_txt addSubview:_image];
_txt.textContainer.exclusionPaths = @[rect];
显然,行数不同,因为存在排除路径和这种常见方式,
CGSize size = [_txt.text
sizeWithFont:_txt.font constrainedToSize:(CGSize){_txt.frame.size.width, INTMAX_MAX}
lineBreakMode:NSLineBreakByWordWrapping];
返回错误的结果。
注意:_txt
是UITextField
。
感谢。
答案 0 :(得分:0)
在UITextInputProtocol
中,有一种名为firstRectForRange:
(doc here)的方法。这可能会成功。尝试将文本范围设置为支持字符串的末尾。
// given a UITextView* called textView
UITextPosition *beginning = textView.beginningOfDocument;
UITextPosition *p0 = [textView positionFromPosition:beginning offset:textView.text.length-1];
UITextPosition *p1 = [textView positionFromPosition:p0 offset:1];
UITextRange *textRange = [textView textRangeFromPosition:p0 toPosition:p1];
CGRect rect = [textView firstRectForRange:textRange];
// rect will be given in the coordinate space of textView
免责声明:即使是一个简单的案例,我也没有尝试过这种做法,而你的看起来并不重要。