菜鸟教程小白 发表于 2022-12-12 17:49:59

ios - NSAttributedString 删除线使我的属性文本消失


                                            <p><p>我正在尝试制作带有删除线的属性字符串。我可以设置其他属性,例如前景色和字体大小,但是当我尝试在部分文本中设置删除线时,该部分文本消失了。知道是什么原因造成的吗?</p>

<p>下面是代码。感谢您的关注!</p>

<pre><code>// ...   
    //Price
    NSLog(@&#34;RESULT NUMBER %d&#34;, cell.result.resultId);
    priceString = (priceString == nil) ? @&#34;$150.00\n$100.00&#34; : priceString;
    NSMutableAttributedString *attributedString = [ initWithString:priceString];
    NSRange linebreak = ;



    if (linebreak.location != NSNotFound) {
      ;
      // RegPrice
      NSRange firstLine = NSMakeRange(0, linebreak.location);
//      [attributedString addAttribute:NSFontAttributeName
//                                 value:
//                                 range:firstLine];
      [attributedString addAttribute:NSForegroundColorAttributeName
                                 value:
                                 range:firstLine];
      @try {
            [attributedString addAttribute:NSStrikethroughStyleAttributeName
                                     value:@(NSUnderlineStyleSingle)
                                     range:firstLine];
      } @catch (NSException *e) {
            NSLog(@&#34;ATTRIBUTE EXCEPTION: %@&#34;, e);
      }

      // Sale Price
      [attributedString addAttribute:NSFontAttributeName
                                 value:
                                 range:NSMakeRange(linebreak.location + 1, priceString.length - (linebreak.location + 1))];
      ;
    }
    cell.lblPrice.attributedText = attributedString;

    return cell;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我遇到了同样的字符串消失问题,直到我意识到 <code>NSStrikethroughStyleAttributeName</code> 的值应该是一个 NSNumber。</p>

<p>因此上面的代码应该是这样的:</p>

<p> objective-c </p>

<pre><code>[attributedString addAttribute:NSStrikethroughStyleAttributeName
                         value:
                         range:firstLine];
</code></pre>

<p>在 Swift 4 中,属性是使用 <code></code> 类型的字典传递的,strike trough style 属性看起来像这样:</p>

<pre><code>
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - NSAttributedString 删除线使我的属性文本消失,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20888083/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20888083/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - NSAttributedString 删除线使我的属性文本消失