相关疑难解决方法(0)

嵌入NSTextAttachment时,高UILabel中缺少行

我可以NSAttributedString使用转义的换行符(@"\n")创建一个多行.使用iOS 7,我现在可以嵌入一个UIImage内部属性字符串(via NSTextAttachment).

我注意到每当我将attributedTexta 设置为UILabel带有嵌入图像的多行属性字符串时,实际显示的行数标签的高度成反比.例如,当标签的高度为80时,会出现两条线; 当高度大约为100时,只出现第二条线; 当高度约为130时,什么都没有出现.

尝试将多个UILabel并排放置在a UITableViewCell内并使标签与单元格高度(垂直)增长时发生此问题.

任何人都可以解释为什么会这样吗?有没有人知道不涉及使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 …
Run Code Online (Sandbox Code Playgroud)

uilabel nstextattachment ios ios7 textkit

20
推荐指数
1
解决办法
6483
查看次数

iOS 7模拟器错误 - 未出现NSAttributedString

更新:我刚刚在运行iOS 7的iPhone 5上遇到过这个问题.很快就会提供更多信息.

我想我在iOS 7模拟器中发现了一个没有出现NSAttributedString的错误.如果其他人可以测试这个以确认它是一个错误,那将是很好的,然后我将向Apple提交一个错误.

问题似乎是NSAttributedString使用NSUnderlineStyleAttributeName和NSParagraphStyleAttributeName的组合.

以下是重现的步骤:

1)在Xcode 5中创建一个新的"单视图应用程序".什么都叫它.

2)在ViewController.m中,将viewDidLoad方法替换为:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableParagraphStyle* paragraph = [[NSMutableParagraphStyle alloc] init];
    paragraph.alignment = NSTextAlignmentCenter;

    NSAttributedString* attrStr = [[NSAttributedString alloc] initWithString:@"Lorem ipsum dolor sit" attributes:
                                   @{NSUnderlineStyleAttributeName:@1,
                                     NSParagraphStyleAttributeName:paragraph}];

    UILabel* myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 0, 0)];
    myLabel.backgroundColor = [UIColor greenColor];
    myLabel.attributedText = attrStr;
    [myLabel sizeToFit];

    [self.view addSubview:myLabel];
}
Run Code Online (Sandbox Code Playgroud)

3)在iOS 7设备上运行,然后在iOS 7模拟器中再次运行它.

4)最后,将部署目标设置为iOS 6并在iOS 6模拟器上运行它.

结果应如下

  • iOS 7设备:正确显示
  • iOS 7模拟器:仅显示标签背景
  • iOS 6模拟器:正确显示

截图:

iOS7设备

iOS 7设备
iOS7模拟器
iOS 7模拟器

ios-simulator ios7 xcode5

5
推荐指数
1
解决办法
2126
查看次数

标签 统计

ios7 ×2

ios ×1

ios-simulator ×1

nstextattachment ×1

textkit ×1

uilabel ×1

xcode5 ×1