- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我创建一个 UITextView,向其中添加文本,然后将其放入 View (带有容器)
UITextView *lyricView = [[UITextView alloc] initWithFrame:screen];
lyricView.text = [NSString stringWithFormat:@"\n\n%@\n\n\n\n\n\n", lyrics];
[container addSubview:lyricView];
[self.view addSubview:container];
然后我获取它的大小以便与按钮一起使用并将它添加到 UITextView
CGRect size = [lyrics boundingRectWithSize:CGSizeMake(lyricView.frame.size.width, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName:[lyricView font]}
context:nil];
UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[doneButton setFrame:CGRectMake(56, size.size.height + 55, 208, 44)];
[doneButton setTitle:@"Done" forState:UIControlStateNormal];
[lyricView addSubview:doneButton];
这适用于大多数情况。这将尊重\n 换行符(就像我在我的 stringWithFormat 中添加的那样)但它不会尊重 TextView 自动添加的自动换行。因此,如果 lyrics
有一行不适合屏幕,UITextView 将把它换行(正如它应该的那样),但 size
现在比它应该的略短是因为它不尊重 TextView 换行。
最佳答案
您可以告诉 boundingRectWithSize
以自动换行模式处理字符串。您必须将 NSParagraphStyle
属性添加到 attributes 参数,并将其 lineBreakMode
设置为 NSLineBreakByWordWrapping
。所以:
NSMutableDictionary *attr = [NSMutableDictionary dictionary];
// ...whatever other attributes you need...
NSMutableParagraphStyle *paraStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
paraStyle.lineBreakMode = NSLineBreakByWordWrapping;
[attr setObject:paraStyle forKey:NSParagraphStyleAttributeName];
然后使用 attr
作为 boundingRectWithSize
的属性参数。
您可以轻松地扩展/推广此技术以读取其他属性,包括来自任何有意义的来源的现有段落样式属性。
关于ios - boundingRectWithSize 不考虑自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20602491/
有谁知道解决方法或我目前在这里做错了什么。 CGSize boundingSize = CGSizeMake(288, 9999); CGRect boundingRect = [text bound
我正在尝试创建一个 UITableViewCell包含 UITextView当用户在 textview 中输入文本时,单元格应该相应地增长。 到目前为止,这也很有效,除了 boundingRectWi
当我使用boundingRectWithSize计算文本的高度时,它崩溃了。我发现可能是因为文本中有一些表情符号。有人可以告诉我如何解决这个问题。 CGFloat kScreenMargin
我在使用 Swift 语言的 boundingRectWithSize 和多行 UILabel 方面遇到了一个奇怪的问题。我目前正在 Xcode Playground 中工作,因此我可以实时查看 UI
我正在使用 BoundingRectWithSize 取回一个 CGRect,它将适本地修复我的文本。我以前有这个代码。 var maximumLabelSize: CGSize = CGSize(w
我创建一个 UITextView,向其中添加文本,然后将其放入 View (带有容器) UITextView *lyricView = [[UITextView alloc] initWithFram
我有一个长度会改变的字符串。我有一个固定宽度和高度的 textView。我想找到适合这些范围的最大字体大小。我使用 boundingRectWithSize。我假设一旦它给我一个大于我的 testRe
非常简单的问题,我正在尝试动态获取 UILabel 的高度,而且 boundingRectWithSize:options:context: 似乎忽略了我的第二行。我在下面粘贴了相关代码: CGSiz
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
我在项目中的要求是UITextView的字体大小应该根据UITextView的内容减小。所以我正在尝试使用 boundingRectWithSize 来估计文本的大小。 问题是我得到的字体大小有点太大
当使用 [NSString boundingRectWithSize:options:attributes] 时,对于某些字符串,返回的矩形的大小比我预期的要高。返回的高度似乎表示具有给定属性的字符串
我查看了几个 Stackoverflow 问题,其中人们对 boundingRectWithSize 有问题,但没有一个是我的问题。 下面的代码通常计算出 1 行文本太高的高度。 CGFloat he
我想要一个 UILabel,其中部分文本带有下划线以类似于链接。这就是我构建 NSAttributedString 的方式: let attributedStr = NSMutableAttribut
[text boundingRectWithSize:BOLIVIASize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NS
我正在尝试使用以下代码动态更新 UITextView 的高度,但结果始终偏离几个像素,这导致 TextView 换行但大小不合适。输入另一个(或两个)字符后,显示会相应更新。 我查看了各种帖子(许多帖
需要 UITextView 所需的高度。 sizeThatFits 返回比 boundingRectWithSize 更大但正确的高度。为什么会存在差异? 在两个地方我需要知道高度。在 cellFor
我有两个 UILabels L1 和 L2。 L1最大宽度为150 L1的最小宽度会根据文字长度调整 两个标签之间的距离是10。 我的代码, NSString *s = @"Stringwithout
我正在尝试根据其当前宽度自动调整文本字段/ View 的大小。换句话说,我希望宽度保持不变,但根据提供给它的文本调整高度。 它似乎工作正常,但出于某种原因,尽管已努力将其移回,但它仍与我的窗口底部对齐
我正在尝试获取属性字符串的矩形,但 boundingRectWithSize 调用不尊重我传入的大小,并返回一个具有单行高度而不是大高度的矩形(它是一个长字符串) .我已经通过传入一个非常大的高度值和
在 iOS7 中,sizeWithFont 已被弃用,所以我使用 boundingRectWithSize(它返回一个 CGRect 值)。我的代码: UIFont *fontText = [UIF
我是一名优秀的程序员,十分优秀!