【问题标题】:How to save bold font using html in objective c?如何在objective c中使用html保存粗体?
【发布时间】:2014-09-12 07:11:55
【问题描述】:

我在 uitextview 中输入了一些文本,还选择了一些文本并将其设为粗体。之后我将把这些数据保存到我的应用程序中。现在,当我要获取该数据时它不会像我保存的那样显示。

它不保存粗体。

下面是代码:

pragma mark - btnActions

   -(IBAction)btnActions:(UIButton *)sender
        {
            [self addOrRemoveFontTraitWithName:@"Bold" andValue:UIFontDescriptorTraitBold];

        }

pragma mark - 私有方法实现

-(void)addOrRemoveFontTraitWithName:(NSString *)traitName andValue:(uint32_t)traitValue{
NSRange selectedRange = [txtViewNote selectedRange];

NSDictionary *currentAttributesDict = [txtViewNote.textStorage attributesAtIndex:selectedRange.location
                                                                  effectiveRange:nil];

UIFont *currentFont = [currentAttributesDict objectForKey:NSFontAttributeName];

UIFontDescriptor *fontDescriptor = [currentFont fontDescriptor];

NSString *fontNameAttribute = [[fontDescriptor fontAttributes] objectForKey:UIFontDescriptorNameAttribute];
UIFontDescriptor *changedFontDescriptor;

if ([fontNameAttribute rangeOfString:traitName].location == NSNotFound) {
    uint32_t existingTraitsWithNewTrait = [fontDescriptor symbolicTraits] | traitValue;
    changedFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:existingTraitsWithNewTrait];
}
else{
    uint32_t existingTraitsWithoutTrait = [fontDescriptor symbolicTraits] & ~traitValue;
    changedFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:existingTraitsWithoutTrait];
}

UIFont *updatedFont = [UIFont fontWithDescriptor:changedFontDescriptor size:0.0];

NSDictionary *dict = @{NSFontAttributeName: updatedFont};

[txtViewNote.textStorage beginEditing];
[txtViewNote.textStorage setAttributes:dict range:selectedRange];
[txtViewNote.textStorage endEditing];
}

pragma mark - btnSave

-(IBAction)btnSave:(id)sender
  {
            NSURL *documentDirectoryURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

            NSURL *documentURL = [documentDirectoryURL URLByAppendingPathComponent:@"test.html"];


            NSString *htmlCode = txtViewNote.text;

            NSError* error;

            if (![htmlCode writeToURL:documentURL atomically:YES encoding:NSUTF8StringEncoding error:&error]) {
                NSLog(@"Couldn't save file because: %@", error);
            }

            NSString* fileToUpload = [NSString stringWithContentsOfURL:documentURL encoding:NSUTF8StringEncoding error:&error];

            if (!fileToUpload) {
                NSLog(@"Couldn't read file because: %@", error);
            }


}

任何人都可以html我吗?

【问题讨论】:

    标签: html objective-c iphone


    【解决方案1】:

    问题是你保存的是 textView 的纯文本而不是属性文本。

    NSString *htmlCode = txtViewNote.text;

    您应该像这样保存属性文本:

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:NSHTMLTextDocumentType,NSDocumentTypeDocumentAttribute, nil];
    NSData *htmlData = [[self txtViewNote].attributedText dataFromRange:NSMakeRange(0, [self txtViewNote].attributedText.length) documentAttributes:attributes error:NULL];
    NSString *htmlCode = [[NSString alloc]initWithData:htmlData encoding:NSUTF8StringEncoding];
    

    如果你想将htmlCode写入textView,你应该:

    NSMutableAttributedString *tmp = [[NSMutableAttributedString alloc] initWithData:htmlData options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil];
    [txtViewNote setAttributedText:tmp];
    

    【讨论】:

    • 对不起,htmlData 应该是: NSData *htmlData = [txtViewNote.attributedText dataFromRange:NSMakeRange(0, txtViewNote.attributedText.length) documentAttributes:attributes error:NULL];并且 tmp 应该是: NSMutableAttributedString *tmp = [[NSMutableAttributedString alloc] initWithData:htmlData options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil]; [txtViewNote setAttributedText:tmp];我将在帖子中进行编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多