NSMutableString appendFormat 遇到的问题 附上内容 请帮忙看看,问题很怪异!!!

NSMutableString* str_attachMent = [NSMutableString stringWithFormat:@"附件(%ld):",attachedCount];

    for ( int i = 0 ; i < attachedCount ; i++) {
        FileInfo *fileInfo = (FileInfo*)mailInfo.attachedArr[i];
        if (i < mailInfo.attachedCount - 1)
        {

             [str_attachMent appendFormat:@"%@;",fileInfo.fileName];

            
        }else {

            [str_attachMent appendString:fileInfo.fileName];
          
        
        }
    }

最后str_attachMent得到拼装好的字符串是如下内容:
附件(9): 404.HTML;BLOG.HTML;BLOG_SINGLE.HTML;CONTACT.HTML;INDEX.HTML;LOGIN.HTML;MEN.HTML;REGISTER.HTML;SINGLE.HTML
可以把内容复制到记事本上面试验下,为什么强行被换行了,而且我是没办法把404这行移到附件(9):后面
[str_attachMent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 移除空格和换行也没有作用.

我估计是拼装内容的问题,但是这个问题没有办法解决么.

阅读 2.6k
2 个回答

不是强行转行,在排版的时候系统将
“404.HTML;BLOG.HTML;BLOG_SINGLE.HTML;CONTACT.HTML;INDEX.HTML;LOGIN.HTML;MEN.HTML;REGISTER.HTML;SINGLE.HTML”看作是一个单词了,在显示的时候“附件(9): ”所在的当前行无法将其完整显示,所以自动跳转到下一行显示,除非你显示的文本框够宽。就好比你在发问题的时候直接像这样打印这句话,它也会换行显示,
附件(9): 404.HTML;BLOG.HTML;BLOG_SINGLE.HTML;CONTACT.HTML;INDEX.HTML;LOGIN.HTML;MEN.HTML;REGISTER.HTML;SINGLE.HTML
但是你在每一个分号后面加上一个空格,效果就是这样的:
附件(9):404.HTML; BLOG.HTML; BLOG_SINGLE.HTML; CONTACT.HTML; INDEX.HTML; LOGIN.HTML; MEN.HTML; REGISTER.HTML; SINGLE.HTML
因为你加了空格,区分开每一个分号前是一个整体,所以在排版的时候就不会出现你的这个问题。

对于UITextView 各种 处理文本的UI 控件会改变文本的排版问题,使用NSMutableAttributedString 可以解决.
NSString* str = [NSString stringWithFormat:@"附件(%ld):",str1];

    NSMutableParagraphStyle* linebreak = [[NSMutableParagraphStyle alloc]init];
    linebreak.lineBreakMode = NSLineBreakByCharWrapping;
    NSMutableAttributedString *str_attachMent = [[NSMutableAttributedString alloc] initWithString:str attributes:@{NSParagraphStyleAttributeName:linebreak}];
    textView.attributedText = str_attachMent; 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏