Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Format text in UITextView

I am making an "About Page" for my application, and I have to paste pretty huge amount of text on that page (text will not be editable).

I am using a UITextView for this purpose. However, I need some words to be in bold (like headings). But I am not able to achieve it. The UITextView removes all my formatting.

I have no code to show here because I am pasting all my text in the IB only.

Is there any workaround?? For example.. I want the heading in bold..

"About ABC Corporation

gkskgsagdfgfskgfjkgfgljdgsfjgdsjfgdjlsgflgdslgfljdsgfljgdsjlgfljdsgfljdgslfgls.
jdfjkhdsjlfhdlsfhkldshfkldshflkdhlkfhdklsfhlksdhflkdshflkhdsflkhsdklfhlksdhflkshf

fjhdshfkldshfkldhsfklhdsklfhlkdshfklhdsklfhdklsfhkdshfklhdsklfhklsdfhkldshfkhdsklf

fhjdgfkdgsjkfgjkdsgfjkdsgjfgjdkgfjgsjdfgjkdsgfjkgsdjkfgjsdgfjgsdjkfgjksdgfjkgskjfgs"
like image 259
Shradha Avatar asked Dec 26 '13 08:12

Shradha


2 Answers

First keep text property of textView as 'Attributed', after that just select the text and change it's style and font as you want.

P.S. - All you have to do this in Attribute inspector panel of IB.

EDIT:

For more, visit this link .

Also, this is very good mainly when the textField have a text that will not change, e.g. - like About info. And when this text is inserted in IB directly instead of assigning text programmaticaly.

like image 58
Nayan Avatar answered Nov 12 '22 11:11

Nayan


You can use NSAttributedString, Set Text Font, Foreground And Background Colors, StrikeThrough And Shadow etc..

Attributed strings make an association between characters and their attributes. Like NSString objects, there are two variations, NSAttributedString and NSMutableAttributedString. Although previous versions of iOS supported attributed strings, it wasn’t until iOS 6 that controls such as buttons, labels, textfields and textviews defined a property to manage attributes. Attributes are applied to a range of characters, so you can for example, set a strikethrough attribute for just a portion of a string. It’s also important to note that the default font for attributed string objects is Helvetica 12-point. Keep this in mind if you set the font attribute for a range other than the complete string. The following attributes can be set with attributed strings:

NSString *const NSFontAttributeName;
NSString *const NSParagraphStyleAttributeName;
NSString *const NSForegroundColorAttributeName;
NSString *const NSBackgroundColorAttributeName; 
NSString *const NSLigatureAttributeName;
NSString *const NSKernAttributeName;
NSString *const NSStrikethroughStyleAttributeName;
NSString *const NSUnderlineStyleAttributeName; 
NSString *const NSStrokeColorAttributeName;
NSString *const NSStrokeWidthAttributeName;
NSString *const NSShadowAttributeName; 
NSString *const NSVerticalGlyphFormAttributeName;



 // Create attributed string
 NSString *str = @"example for underline \nexample for font \nexample for bold \nexample for italics"; 

 NSMutableAttributedString *attributedString =
 [[NSMutableAttributedString alloc] initWithString:str];

 // Add attribute NSUnderlineStyleAttributeName 
 [attributedString addAttribute:NSUnderlineStyleAttributeName 
                   value:[NSNumber numberWithInt:NSUnderlineStyleSingle] 
                   range:NSMakeRange(12, 9)];
 [attributedString addAttribute:NSUnderlineStyleAttributeName
                   value:[NSNumber numberWithInt:NSUnderlineStyleSingle]
                   range:NSMakeRange(12, 9)];

 // Set background color for entire range
 [attributedString addAttribute:NSBackgroundColorAttributeName
                   value:[UIColor yellowColor]
                   range:NSMakeRange(0, [attributedString length])];


 // Create NSMutableParagraphStyle object
 NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
 paragraph.alignment = NSTextAlignmentCenter;

 // Add attribute NSParagraphStyleAttributeName
 [attributedString addAttribute:NSParagraphStyleAttributeName 
                   value:paragraph
                   range:NSMakeRange(0, [attributedString length])];



 // Set font, notice the range is for the whole string
 UIFont *font = [UIFont fontWithName:@"Helvetica" size:18]; 
 [attributedString addAttribute:NSFontAttributeName 
                   value:font
                   range:NSMakeRange(35, 4)];



 // Set font, notice the range is for the whole string
 UIFont *fontBold = [UIFont fontWithName:@"Helvetica-Bold" size:18];
 [attributedString addAttribute:NSFontAttributeName 
                   value:fontBold 
                   range:NSMakeRange(53, 4)];

 // Set font, notice the range is for the whole string 
 UIFont *fontItalics = [UIFont fontWithName:@"Helvetica-Oblique" size:18];
 [attributedString addAttribute:NSFontAttributeName 
                   value:fontItalics
                   range:NSMakeRange(71, 7)];



 // Set label text to attributed string
 [self.mytextView setAttributedText:attributedString];
like image 5
Arun Kumar Avatar answered Nov 12 '22 12:11

Arun Kumar