- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我可以使用转义换行符 (@"\n"
) 创建多行 NSAttributedString
。在 iOS 7 中,我现在可以在属性字符串中嵌入一个 UIImage
(通过 NSTextAttachment
)。
我注意到,每当我将 UILabel
的 attributedText
设置为带有嵌入图像的多行属性字符串时,实际显示的行数是 与标签的高度成反比。比如当标签的高度为80时,出现两条线;当高度在100左右时,只出现第二行;当高度为130左右时,什么也没有出现。
当尝试在 UITableViewCell
中并排放置多个 UILabel 并让标签随着单元格高度(垂直)增长时,会出现此问题。
谁能解释为什么会这样?有谁知道不涉及缩小 UILabel 的解决方法?
示例代码:
@implementation SOViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableAttributedString *text1 = [[NSMutableAttributedString alloc] init];
[text1 appendAttributedString:[[NSAttributedString alloc] initWithString:@"Line 1\n"]];
[text1 appendAttributedString:[[NSAttributedString alloc] initWithString:@"Line 2"]];
UIImage *image = [UIImage imageNamed:@"17x10"]; //some PNG image (17px by 10px)
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = image;
attachment.bounds = CGRectMake(0, 0, image.size.width, image.size.height);
NSMutableAttributedString *text2 = [[NSMutableAttributedString alloc] init];
[text2 appendAttributedString:[[NSAttributedString alloc] initWithString:@"Line 1\n"]];
[text2 appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];
[text2 appendAttributedString:[[NSAttributedString alloc] initWithString:@"Line 2"]];
CGFloat margin = 20;
//shows both lines when height == 80
//shows line 2 when 90 <= height <= 120
//shows nothing when height == 130
CGFloat height = ???;
CGFloat width = 200;
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(margin, margin, width, height)];
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(margin, margin + height, width, height)];
[self.view addSubview:label1];
[self.view addSubview:label2];
label1.backgroundColor = [UIColor orangeColor];
label2.backgroundColor = [UIColor blueColor];
label2.textColor = [UIColor whiteColor];
label1.numberOfLines = 0;
label2.numberOfLines = 0;
label1.attributedText = text1;
label2.attributedText = text2;
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(margin + width, margin + height, image.size.width, image.size.height);
[self.view addSubview:imageView];
}
@end
...将它放在“单 View 应用程序”的默认 View Controller 中。 (您可以选择自己的图片。)
最佳答案
它确实与 NSTextAttachment 无关。到目前为止,在 iOS 7 中,UILabel 不太擅长绘制属性字符串。带有一些下划线和居中段落样式的简单属性字符串将在 UILabel 中显示为空白或部分空白;相同的属性字符串在 UITextView 中绘制得很好。
因此,目前的一种解决方案是:改用 UITextView。这实际上是一个非常好的解决方案,因为在 iOS 7 中,UITextView 只是 Text Kit 堆栈的包装器。所以它以一种直接的方式绘制属性字符串。它不会受到它在以前的 iOS 版本中与 Web Kit 的底层关系的阻碍。
另一方面,我也找到了解决这个 UILabel 错误的方法;您必须摆弄标签的行数和字符串,以便将文本塞到标签的顶部:在这里查看我的答案 - https://stackoverflow.com/a/19409962/341994
或者您可以等待 Apple 修复该错误并祈祷。编辑:在 iOS 7.1 中,该错误似乎将被修复并且不需要解决方法。
关于ios - 嵌入 NSTextAttachment 时高 UILabel 中缺少的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253224/
我正在尝试创建一个带有文本的标签,并在前面加上一个图标,但不幸的是我无法仅更改图标的颜色。它始终使用默认颜色着色。 我是这样做的: var titleStringAttribute = NSMutab
如何像下面的示例一样在 NSTextAttachments 周围设置间距? 在示例中,当我将 NSTextAttachment 附加到 NSAttributedString 时,无间距是默认行为。 最
使用 iOS7,我可以使用 NSTextAttachments 毫无问题地在 UITextView 中显示图像。但是,是否可以使用 NSTextAttachments 在 UITextView 中显示
我想在我添加到 UITextView 的一些图像上添加额外信息。该类是NSTextAttachment()。我需要我的图像具有一些 String 描述,以便应用知道图像中的内容。如何添加这个额外的功能
我有一个通知中心小部件,它有一个带有表格 View 单元格的表格 View 。在单元格中,我有一个标签,我想用文本 + 图像显示。图像作为 NSTextAttachment 包含在内。我在应用程序中有
NSTextAttachment 锁定图像在边缘被截断,但当线条没有在边缘断开时,可以看到锁定图标。我希望图标移动到下一行,就像单词移动到下一行一样。 例子如下: NSTextAttachme
我正在学习这个很酷的教程 Implementing Rich Text with Images on OS X and iOS由@Duncan Groenewald 开发,能够在我的 UITextVi
我正在尝试使用 NSTextAttachment 在 UITextField 中显示图像,但我希望图像和文本之间有一些水平空间。但是,当如下所示将 NSKernAttributeName 属性添加到属
我之前使用 NSTextAttachmentCell 开发了一个 Mac 应用程序,并向其应用 NSTextfield,以便文本字段出现在插入的图像上方。请注意,此 NSTextAttachmentC
我会得到很多消息字符串 像这些: 1.hello {{http://i.imgur.com/f1cqT3ut.jpg}} 世界 {{http://i.imgur.com/f1cqT3ut.jpg}}
当从包含图像链接(https)的HTML字符串创建NSAttributedString时,下载的图像会以某种方式被缓存。我是怎么想到这个事实的? 安装应用。 打开应用程序。图片就在那里。 关闭应用程序
我正在尝试使用 NSAttributableString 设置 UILabel,如下所示: (x)第一项 (x)第二项 (x)第三项 其中 (x) 代表通过 NSTextAttachments 加载的
当我将图像附件添加到具有前景色集的 UITextView 时,图像会被设置的颜色遮挡: let attrString = NSMutableAttributedString(string: rawTe
我似乎无法通过 NSAttributedString 中的 NSTextAttachment 图像更改透明度。 我有一个字符串,我想淡入和淡出,但附加到该字符串的图像似乎没有随文本一起淡出。 我已经尝
之前,我将特定字符串更改为包含图像的 NSTextAttachment 以显示自定义表情符号。 字符串转NSTextAttachment代码 { guard let origi
我正在使用以下代码将 RSS 提要的原始 HTML 格式化为 NSAttributedString . HTML 包含 导致图像附加为 NSTextAttachment 的标签进入NSAttribut
我正在尝试使用 NSAttributableString 设置 UILabel,如下所示: (x)第一项 (x)第二项 (x)第三项 其中 (x) 代表通过 NSTextAttachments 加载的
我正在使用 NSAttributedString 将图像包含在字符串中。然而,图像有时会模糊,就像在非整数框架上绘制一样。 我试图确保每个 NSTextAttachment 的边界都是整数大小,但这似
是否可以在 iOS 上要显示 NSTextAttachment 的位置显示自定义 View ?我有自定义文本存储和布局管理器子类,但我不确定将代码放在哪里才能实际添加 subview 。 (我想要这个
在 editable = YES 和 selectable = NO 的 UITextView 中,我想禁用 NSTextAttachments 上的交互。更具体地说,我不想长按 NSTextAtta
我是一名优秀的程序员,十分优秀!