Objective
In the process of iOS development, Uilabel is a very common control and a large number of uses. Create a Uilabel generally need five or six code, if we need to create dozens of uilabel, it means we have to write fifty or sixty code, in fact, a lot of code is duplicated, we can write similar code in a common method to improve productivity and reduce code duplication. Some of the attributes of the official Uilabel are very limited, some of the extensibility attributes that need to be used in the development of the project, based on personal experience, are also summarized here.
First, the method of creating Uilabel public
1. The following methods are declared in the header file:
+ (UILabel *) Commonlabelwithframe: (cgrect) frame text: (nsstring*) Text color: (uicolor*) Color font: ( uifont*) Font textalignment: (nstextalignment) textalignment;
2. Implement this method in the source file:
+ (UILabel *) Commonlabelwithframe: (cgrect) frame text: (nsstring*) Text color: (uicolor*) Color font: ( uifont*) Font textalignment: (nstextalignment) textalignment{ UILabel *label = [[UILabel alloc] initWithFrame: Frame]; Label.text = text; Label.textcolor = color; Label.font = font; Label.textalignment = textalignment; Label.backgroundcolor = [Uicolor clearcolor]; return label;}
Two, dynamic setting Uilabel height
1, the first file declaration method is as follows:
/** * Create a dynamic height of Uilabel * * @param pointx label's horizontal axis * @param pointy label's ordinate * @param width Label Width * @param strcontent content * @param color font Color * @param font Font size * @ PARAM Textalignmeng Alignment * * @return Returns a UILabel */+ (UILabel *) Dynamicheightlabelwithpointx: (cgfloat) Pointx Pointy: (cgfloat) Pointy width: (cgfloat) Width strcontent: (NSString *) strcontent color: ( Uicolor *) Color font: (Uifont *) font Textalignmeng: (nstextalignment) Textalignmeng;
2. Implement this method in the source file:
Dynamically set label height + (UILabel *) Dynamicheightlabelwithpointx: (cgfloat) Pointx pointy: (cgfloat) Pointy width: (cgfloat) Width strcontent: (NSString *) Strcon Tent Color: (uicolor *) color font: (Uifont *) font Textalignmeng: (nstextalignment) textalignmeng{nsmutableparagraphstyle *paragraphstyle = [NSMut Ableparagraphstyle Alloc]init]; Paragraphstyle.linebreakmode = nslinebreakbywordwrapping; Nsdictionary *attributes = @{nsfontattributename:font, Nsparagraphstyleattributename:paragraphstyle. copy}; Cgsize labelsize = [strcontent boundingrectwithsize:cgsizemake (Width,maxfloat) Options:nsstringdrawinguseslinefragmentorigin attributes:attributes Context:nil].size; UILabel *mylabel = [[UILabel alloc] Initwithframe:cgrectmake (Pointx, pointy, width, labelsize.height)]; [MyLabel setnumberoflines:0]; MyLabel.Text = strcontent; Mylabel.font = font; Mylabel.textcolor = color; return MyLabel;}
3. Test results:
-(void) viewdidload { [super viewdidload]; NSString *str = @ "At the beginning of June, China Resources Huafa complex to 8.795 billion yuan won the Shanghai Zhabei plots, land parcel floor price of 38061 yuan/square meters, refreshed its own in March set the Shanghai Total price" Land King "record. On the same day, China Merchants Peace Union to up to 23,000 yuan/square meters of floor price, to compete for the Baoshan Big Town land, creating nearly 90% high premium rate. Not only the first-line market, Hangzhou, Suzhou and other second-tier market in the early June to focus on the ground. Hangzhou Xixi Wetland Side low-density residential land price of 9975 yuan/square meters, the premium rate of 33%, to become the 2014 Spring Festival in Hangzhou since the highest premium rate of residential land. "; UILabel *label = [Ltlabel dynamicheightlabelwithpointx:5 pointy:20 width:self.view.frame.size.width-10 strContent:str Color:[uicolor Blackcolor] Font:[uifont systemfontofsize:20.0] textalignmeng:nstextalignmentleft]; Label.backgroundcolor = [Uicolor grouptableviewbackgroundcolor]; [Self.view Addsubview:label]; }
(1) The font size is 15th, and the margin interval is 5, the test results are as follows:
(2) The font size is 20th and the margin interval is 5, the test result is as follows:
(3) The font size is 20th and the margin interval is 50, the test result is as follows:
(4) The font size is 20th, the margin interval is 5, the text content is added, and the test results are as follows:
Third, set the alignment of the Uilabel
Some of the alignments that the authorities have provided for Uilabel are not explained here, which mainly complements the alignment that the authorities have not provided. There are three commonly used alignment options: Vertical Top, top center, top right.
1, the first file declaration method is as follows:
@interface dplabel:uilabeltypedef enum{ verticalalignmenttop = 0,//default vertical top alignment verticalalignmentmidele,< c4/>//top center Align Verticalalignmentbottom, //top right align}verticalalignment; @property (nonatomic, assign) VerticalAlignment VerticalAlignment;
2, the source file implementation of the method:
#import "DpLabel.h" @implementation dplabel@synthesize verticalalignment;-(ID) initWithFrame: (cgrect) frame{self = [ Super Initwithframe:frame]; if (self) {//initialization code verticalalignment = Verticalalignmenttop; } return self;} -(VerticalAlignment) verticalalignment{return verticalalignment;} -(void) Setverticalalignment: (verticalalignment) align{verticalalignment = align; [Self setneedsdisplay];} -(CGRect) Textrectforbounds: (cgrect) Bounds Limitedtonumberoflines: (nsinteger) numberoflines{cgrect rc = [super Textrectforbounds:bounds Limitedtonumberoflines:numberoflines]; Switch (verticalalignment) {case VERTICALALIGNMENTTOP:RC.ORIGIN.Y = BOUNDS.ORIGIN.Y; Break Case VERTICALALIGNMENTBOTTOM:RC.ORIGIN.Y = bounds.origin.y + bounds.size.height-rc.size.height; Break DEFAULT:RC.ORIGIN.Y = Bounds.origin.y + (bounds.size.height-rc.size.height)/2; Break } return RC;} -(void) Drawtextinrect: (cgrect) rect{cgrect rc = [self textrectforbounds:rect limitedtonumberoflines: Self.numberoflines]; [Super DRAWTEXTINRECT:RC];} Ways to adjust line spacing in text/* Use method * *text parameter: text content * *height parameter: line spacing * *name parameter: uilable object you use */-(void) Getlable_height:(NSString *) Tex T uiheight: (nsinteger) Height uilable: (uilabel*) name{nsmutableattributedstring *attributedstring = [[NSMutableAttrib] Utedstring alloc] Initwithstring:text]; Nsmutableparagraphstyle *paragraphstyle = [[Nsmutableparagraphstyle alloc] init]; [Paragraphstyle setlinespacing:height];//adjust line spacing [attributedstring addattribute:nsparagraphstyleattributename value: Paragraphstyle range:nsmakerange (0, [text length])]; Name.attributedtext = attributedstring; } @end
3. Test results
<span style= "FONT-SIZE:18PX;" >-(void) viewdidload { [super viewdidload]; Dplabel *label = [[Dplabel alloc] Initwithframe:cgrectmake (+, +, self.view.frame.size.width-40, +)]; Label.text = @ "Test alignment"; Label.textalignment = Verticalalignmenttop; Label.backgroundcolor = [Uicolor redcolor]; [Self.view Addsubview:label];} </span>
(1) test the vertical top alignment, the test results are as follows:
(2) test the top center alignment, the test results are as follows:
(3) test the top right alignment, the test results are as follows:
Resources: http://download.csdn.net/detail/u010545480/8808451
Common properties and extended properties of IOS Uilabel