2015-04-21 23 views
0

什麼,我需要做的是增加一個象徵性的特徵來選定的範圍內,所以如果它是斜體和我按下大膽的按鈕,然後它應該是斜體,大膽增加一個象徵性的特徵來選定範圍

- (IBAction)boldedSelectedText:(UIButton*)sender { 
    UIFontDescriptor* bodyFontDescriptor=[UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody]; 
    UIFontDescriptor* boldFontdescriptor=[bodyFontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold]; 
    self.body.font=[UIFont fontWithDescriptor:boldFontdescriptor size:0.0]; 
} 
- (IBAction)italicSelectedText:(UIButton *)sender { 
    UIFontDescriptor* bodyFontDescriptor=[UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody]; 
UIFontDescriptor* italicFontdescriptor=[bodyFontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic]; 
self.body.font=[UIFont fontWithDescriptor:italicFontdescriptor size:0.0]; 
} 

的問題是,當我選擇一個文本,並使它大膽然後斜體,它變得只有斜體,並且它不能大膽和斜體同時我不知道該怎麼做才能爲以前的特性添加一個新的特質?

回答

0

字體符號特徵是一個位掩碼(NS_OPTIONS)。您需要根據您選擇的選項將標誌設置爲一個或兩個。 是這樣的:

UIFontDescriptor* italicBoldFontdescriptor = [bodyFontDescriptor 
     fontDescriptorByAddingAttributes:@{UIFontDescriptorTraitsAttribute: 
      @{ UIFontSymbolicTrait: @(UIFontDescriptorTraitItalic | UIFontDescriptorTraitBold) } 
     }]; 

fontDescriptorByAddingAttributes將作爲每DOC,

返回一個新的字體描述符是一樣的接收器,但與優先於現有指定屬性

這將允許您保留其他設置。