ios开发label,iOS开发为什么nsstring用copy

ios开发:如何让label的字体向右对齐

基本上ios中用到文字的空间都有属性来控制文本对其的方式的,其中UILabel的对其方式是 label1.textAlignment = UITextAlignmentCenter; 文本对齐方式有以下三种typedef enum {UITextAlignmentLeft = 0,左对齐UITextAlignmentCenter,居中对齐UITextAlignmentRight, 右对齐} UITextAlignment; 按钮对其的方式是: button.titleLabel.textAlignment = NSTextAlignmentCenter;typedef enum {UITextAlignmentLeft = 0,左对齐UITextAlignmentCenter,居中对齐UITextAlignmentRight, 右对齐} UITextAlignment;

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的木兰网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

IOS开发之UILabel文字局左上角显示

有时候,我们的label设置的高度比较高,然而文字比较少,这时候文字默认就会水平局左,垂直居中显示,我们都知道UILabel有水平局左,居右,居中的源方法,但是水平的确实没有,这时候的效果就是文字的上面空白很多,下面空白很多,我们只需要写一个UILabel的类就可以实现我们想要的效果,文字局左上角显示,其实很简单:

创建一个继承与UILabel的类,只需要在.m中写以下方法就可以

然后利用该类的名字为对象的属性,创建一个UILabel就可以了

iOS设置UILabel最大宽度(preferredMaxLayoutWidth)

在开发项目的时候,经常遇到需要适配uilabel的宽度的地方。如果label后面不需要紧跟其他的UI元素还可以,只需要设置一个label的宽度,然后字体靠左对齐就可以了。

但是,如果像图中这样依然采用这种方式,则会导致右边的元素不会紧跟着文字,达不到预想的效果。

这时preferredMaxLayoutWidth就可以发挥它的作用了。

// Support for constraint-based layout (auto layout)

// If nonzero, this is used when determining -intrinsicContentSize for multiline labels

@property(nonatomic) CGFloat preferredMaxLayoutWidth NS_AVAILABLE_IOS(6_0);

文档中说的大概意思就是,当约束基于auto layout时,如果这个值不是0,这个属性就可以用来固定多行label的宽度。

也就是说当文本很长的时候,可以通过这个属性来设置label的最大宽度,使label通过更多的行数来展示全部文本内容。

那么问题来了,我们要的效果是限制但行文本的最大宽度,而不是让文本多行展示。

这个地方我试过将label的numberOfLines设置为1,但是此时设置的最大宽度不起作用了。(毕竟preferredMaxLayoutWidth说明是约束多行文本的最大宽度。。)

所以,我又想到了一个曲线救国的办法,在xib中为label的高度加一个只有一行文字时高度的约束,这时经过我的测试就达到了预期的效果:只展示单行文字,并且label不会超过设定的最大宽度,文字长度较短时,label也是对应文本的相应宽度。完美!

(文章写的很少,有些啰嗦,见谅。)

iOS 开发-UILabel(文本)的使用

1.     创建CGRectrect = CGRectMake(100,200,50,50);

UILabel *label = [[UILabelalloc]initWithFrame:rect];

2.      text     设置和读取文本内容,默认为nil

label.text = @”文本信息”;     设置内容

NSLog(@”%@”, label.text)     打印label内容

3.      textColor      设置文字颜色,默认为黑色

lable.textColor = [UIColor redColor];

4.      font      设置字体大小,默认17

label.font = [UIFont systemFontOfSize:20]; 跟随系统默认字体

label.font=[UIFont boldSystemFontOfSize:20]; 设置字体加粗字号为20的label

label.font=[UIFont fontWithName:@"Arial"size:16]; 指定字体的方法, 还有⼀一种从外部导入字体的方法

5.      textAlignment      设置标签文本对齐方式

label.textAlignment = NSTextAlignmentCenter; 设置文本内容居中显示

label.textAlignment = NSTextAlignmentLeft; 设置文本内容居左显示

label.textAlignment = NSTextAlignmentRight; 设置文本内容居右显示

6.      numberOfLines      设置文本最多显示行数, 为0则表示行数不限(无限行)

label.numberOfLines = 2; 设置文本内容行数为2行

7.      enabled     只是决定了Label的绘制方式,将它设置为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的, 默认为YES;

label.enable = NO;

8.      highlighted 是否高亮显示,默认为NO

label.highlighted = YES;  

label.highlightedTextColor = [UIColor orangeColor]; 高亮显示时的文本颜色

9.      ShadowColor     设置阴影颜色

[label setShadowColor:[UIColorblackColor]];

10.      ShadowOffset      设置阴影偏移量

[label setShadowOffset:CGSizeMake(-1,-1)];

11.      baselineAdjustment  

如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为。

label.baselineAdjustment = UIBaselineAdjustmentNone;

UIBaselineAdjustmentAlignBaselines = 0默认,文本最上端与中线对齐。

    UIBaselineAdjustmentAlignCenters,文本中线与label中线对齐。

UIBaselineAdjustmentNone,文本最低端与label中线对齐。

12.      Autoshrink     是否自动收缩FixedFontSize 默认,如果Label宽度小于文字长度时,文字大小不自动缩放minimumScaleFactor 设置最小收缩比例,如果Label宽度小于文字长度时,文字进行收缩,收缩超过比例后,停止收缩。minimumFontSize 设置最小收缩字号,如果Label宽度小于文字长度时,文字字号减小,低于设定字号后,不再减小。//6.0以后不再使用了。

label.minimumScaleFactor = 0.5;

13.      adjustsLetterSpacingToFitWidth     

       改变字母之间的间距来适应Label大小

       label.adjustsLetterSpacingToFitWidth = NO;

14.      lineBreakMode    设置文字过长时的显示格式

label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显示,后面部分省略不显示。

label.lineBreakMode=NSLineBreakByClipping;剪切与文本宽度相同的内容长度,后半部分被删除。

label.lineBreakMode=NSLineBreakByTruncatingHead;前面部分文字以……方式省略,显示尾部文字内容。

label.lineBreakMode=NSLineBreakByTruncatingMiddle;中间的内容以……方式省略,显示头尾的文字内容。

label.lineBreakMode=NSLineBreakByTruncatingTail;结尾部分的内容以……方式省略,显示头的文字内容。

label.lineBreakMode=NSLineBreakByWordWrapping;以单词为显示单位显示,后面部分省略不显示。

15.      adjustsFontSizeToFitWidth    设置字体大小适应label宽度

label.adjustsFontSizeToFitWidth = YES;

16.      attributedText      设置标签属性文本。

NSString*text=@"first";

NSMutableAttributedString *textLabelStr = [[NSMutableAttributedStringalloc]initWithString:text];       

   [textLabelStrsetAttributes:@{NSForegroundColorAttributeName[UIColorlightGrayColor],NSFontAttributeName:    [UIFontsystemFontOfSize:17]} range:NSMakeRange(11,10)];

label.attributedText = textLabelStr;

17.     竖排文字显示每个文字加一个换行符,这是最方便和简单的实现方式。

label.text=@"请\n竖\n直\n方\n向\n排\n列";

label.numberOfLines = [label.text length];(可以直接设置成数字)

18.     计算UIlabel 随字体多行后的高度

CGRect bounds = CGRectMake(0,0,200,300);

heightLabel = [label textRectForBounds:bounds limitedToNumberOfLines:20];计算20行后的Label的Frame   

NSLog(@"%f",heightLabel.size.height);

19.     UILabel根据字数多少自动实现适应高度

UILabel*msgLabel = [[UILabel alloc] initWithFrame:CGRectMake(15,45,0,0)];

msgLabel.backgroundColor=[UIColor lightTextColor];

[msgLabel setNumberOfLines:0];

msgLabel.lineBreakMode = UILineBreakModeWordWrap;

msgLabel.font = [UIFont fontWithName:@"Arial"size:12];

CGSize size = CGSizeMake(290,1000);

msgLabel.text = @"一个人 一首歌 一杯酒 一支烟 一部手机 一台电脑 一杯清茶 一路清贫 一路走 一路停 一个远方 一个你还没到来 万世孤独";

CGSize msgSie = [msgLabel.text sizeWithFont:fontsconstrainedToSize:size];

[msgLabel setFrame:CGRectMake(15,45,290,msgSie.height)];

20.      渐变字体

LabelUIColor *titleColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn.png"]];

NSString *title = @"Setting";

UILabel*titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,0,80,44)];

titleLabel.textColor=titleColor;

titleLabel.text = title;

titleLabel.font = [UIFont boldSystemFontOfSize:20];

titleLabel.backgroundColor=[UIColor clearColor];

[self.view addSubview:titleLabel];

21.      Label添加边框

titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];

titleLabel.layer.borderWidth = 2;

22. 设置label内边距

    .h文件

    @interface DrawRectLabel : UILabel

    @property ( nonatomic , assign ) UIEdgeInsets edgeInsets;

    @end

    .m文件      需要重写方法:  - ( void )drawTextInRect:(CGRect)rect

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines{

   UIEdgeInsetsinsets = self .edgeInsets;

   CGRect rect = [ super textRectForBounds:UIEdgeInsetsInsetRect(bounds, insets)limitedToNumberOfLines:numberOfLines];

rect.origin.x    -= insets.left;

   rect.origin.y    -= insets.top;

rect.size.width  += (insets.left+ insets.right);

rect.size.height+= (insets.top+ insets.bottom);

return rect;

}

iOS开发 UILabel 设置行间距,以及居中对齐

解决UILabel设置富文本字体后(即设置行间距),文字没有居中显示

iOS开发小笔记 | 如何给label设置背景图片?

实际开发中,我们往往会遇到下面这种label:

我尝试了下面几种方案:

然而很不幸,这招对label的layer无效。

但是你又发现你的图片被裁剪了:

你只看到它:

却不知其实是它:

这招挺实在的,我也无话可说。

用button


本文题目:ios开发label,iOS开发为什么nsstring用copy
文章来源:http://ybzwz.com/article/dsdhpdg.html