如何在objective c中使用html保存粗体字体?
我在uitextview中键入了一些文本,并且选择了一些文本并将其加粗。之后,我将把这些数据保存到我的应用程序中。现在,当我要获取这些数据时,它将不会显示与我保存的数据相同的内容 它不保存粗体字体 代码如下: pragma标记-btnActions pragma标记-私有方法实现 pragma标记-btnSave如何在objective c中使用html保存粗体字体?,html,objective-c,iphone,Html,Objective C,Iphone,我在uitextview中键入了一些文本,并且选择了一些文本并将其加粗。之后,我将把这些数据保存到我的应用程序中。现在,当我要获取这些数据时,它将不会显示与我保存的数据相同的内容 它不保存粗体字体 代码如下: pragma标记-btnActions pragma标记-私有方法实现 pragma标记-btnSave 任何一个html都可以帮我吗?问题是您保存的是textView的纯文本,而不是attributedText NSString*htmlCode=txtViewNote.text 相反,
任何一个html都可以帮我吗?问题是您保存的是textView的纯文本,而不是attributedText NSString*htmlCode=txtViewNote.text 相反,您应该像这样保存属性化文本: 如果要将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)文档属性:属性错误:NULL];tmp应该是:NSMutableAttributedString*tmp=[[NSMutableAttributedString alloc]initWithData:htmlData选项:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)}DocumentAttribute:nil错误:nil];[txtViewNote setAttributedText:tmp];我会在帖子中编辑这个。
-(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];
}
-(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);
}
}
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];
NSMutableAttributedString *tmp = [[NSMutableAttributedString alloc] initWithData:htmlData options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil];
[txtViewNote setAttributedText:tmp];