首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMutableAttributedString崩溃应用程序

NSMutableAttributedString崩溃应用程序
EN

Stack Overflow用户
提问于 2014-08-16 02:40:59
回答 1查看 1.6K关注 0票数 0

我在设置这个NSMutableAttributedString时,在范围(我想)上做错了什么。有人能告诉我为什么这会破坏我的程序吗?在我看来是对的,但我显然错了!谢谢。

代码语言:javascript
复制
NSString *placeHolderString = @"USERNAME";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] init];
float spacing = 5.0f;

// crashes on this line
[attributedString addAttribute:NSKernAttributeName
                         value:@(spacing)
                         range:NSMakeRange(0, [placeHolderString length])];

self.userNameTextField.attributedPlaceholder = attributedString;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-16 02:48:07

我认为导致您的问题的是,您从来没有真正考虑到您的placeholderString从一开始。此外,您的值参数可以简单地使用numberWithFloat,因为应用程序将知道您一直在使用什么类型。

一旦您为placeHolderString帐户,然后您将使用长度为attributeString,因为它现在只包含您的placeholderString的内容。然后,我们只需使用UITextField属性attributedText复制包含属性的字符串。

代码语言:javascript
复制
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:placeHolderString];
float spacing = 5.0f;
[attributeString addAttribute:NSKernAttributeName
                        value:[NSNumber numberWithFloat:spacing]
                        range:(NSRange){0,[attributeString length]}];
userNameTextField.attributedText = [attributeString copy];

对于更多的上下文,像NSUnderlineStyleAttributeName这样的属性是存在的,您可以使用NSMutableAttributedString做一些非常强大的事情。有关选项,请参阅文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25336462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档