美文网首页
1.3UILabel

1.3UILabel

作者: 草根小强 | 来源:发表于2019-04-08 14:08 被阅读0次

    UILabel

    - (void)aboutLabel{
       
    //    //1.实例化一个Lable
    //    UILabel *label = [[UILabel alloc] init];
    //
        //设置标签的位置大小  frame
    //CGRect 是一个结构体,有一个  点 的结构体(CGpoint)  和 一个大小 的结构体(CGSize)  组成
    //    //CGSize 表示矩形大小,CGPonint 表示矩形左上角的点的坐标
    //    //所有的视图都是矩形
    //    label.frame = CGRectMake(0, 0, 100, 100);
    //    //一个视图默认的视图是透明的。
    //    
    //    label.backgroundColor = [UIColor redColor];
    //
    //    
    //    //2.贴到窗口上进行显示
    //    [self.window addSubview:label];
    
        
    }
    
    - (void)aboutLabel{
    //1.实例化一个Lable
    UILabel *label = [[UILabel alloc] init];
    
    //设置标签的位置大小  frame
    //CGRect 是一个结构体,有一个  点 的结构体(CGpoint)  和 一个大小 的结构体(CGSize)  组成
    //CGSize 表示矩形大小,CGPonint 表示矩形左上角的点的坐标
    //所有的视图都是矩形
        
    label.frame = CGRectMake(0, 0, 375, 100);
    //一个视图默认的视图是透明的。
    
    label.backgroundColor = [UIColor redColor];
    
        //UILabel 常用的属性....
        //1. 设置显示的内容 .text
        //运行完第一个程序之后 就把原先的程序给停了,因为UI的程序一运行之后要自己手动停止才会停止
        //label.text = @"xiaoqiangxiaoqiangxiaoqiangxiao qiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiao qiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiaoqiangxiao";
        
        label.text = @"xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao qiang xiao";
    //     label.text = @"xiao qiang";
        //2.设置字体的的颜色 .textColor
        
        label.textColor = [UIColor blueColor];
        //3. 设置文字的字体格式 .font
        //label 默认的字体大小是 17
        //只支持英文  如果是汉语  下面的字体方法就没什么用
        //3.1系统字体 size 表示字号
    
        label.font = [UIFont systemFontOfSize:40];
        //3.2 系统字体加粗
        label.font = [UIFont boldSystemFontOfSize:40];
        //3.3 系统字体  斜体(italic)
        
        label.font = [UIFont italicSystemFontOfSize:40];
        //3.4 自定义字体
        //取出手机字体库
        //返回值是数组
        //打印这部手机支持的所有字体
       NSLog(@"%@",[UIFont familyNames]);
        
        //自定义字体
        label.font = [UIFont fontWithName: @"Georgia"size:20];
       //4. 设置文字的对齐方式
     //   NSTextAlignmentLeft = 0;
    //    NSTextAlignmentCenter  = 1;
    //    
    //    NSTextAlignmentRight = 2;
        //alignment 成一直线
        label.textAlignment = NSTextAlignmentCenter;
        
        //5.关于换行   (label使用的重点)*****重点
        //注意点: 只适合英文 不适合中文
        
        //表示这个label 最多显示多少行, 默认是1
        //局限性
        //受限于
        //5.1 文字的内容多少
        
        
        //5.2 受限于label的大小  也就是高度 文本框的高度
    //    label.numberOfLines = 99;
        
        // 0 表示这个label能显示多少行,就显示多少行
        label.numberOfLines = 3;
    //    label.numberOfLines = 0;
        
    //    NSLineBreakByWordWrapping = 0,  //以单词换行   就是当你的屏幕显示不出来的时候,会把后面的以省略号 形式在最右下角显示
    //    
    //    NSLineBreakByCharWrapping,    //以字符换行
    //    
    //     NSLineBreakByClipping,   //以单词换行   最后尾部切割,就是当你的屏幕显示不出来的时候,会把后面的切割,不会显示
    //    
    //    NSLineBreakByTruncatingHead,  //根据单词换行,最后一行省略头部
    //    
    //    NSLineBreakByTruncatingTail, //根据单词换行,最后一行省略尾部
    //    
    //    NSLineBreakByTruncatingMiddle //根据单词换行,最后一行省略中部
        
        label.lineBreakMode = NSLineBreakByClipping;
        
        
    #warning  扩展
        //1. 设置文字的阴影(shadow)  阴影的颜色
    //    label.shadowColor  = [UIColor blackColor];
        
        //2. 修改阴影的位置,偏移量 (Offset)
        //宽和高表示阴影再两个坐标方向上的偏移量
    //    label.shadowOffset = CGSizeMake(-30, -30);//阴影在左上
    //    label.shadowOffset = CGSizeMake(30, 30);//阴影在右下
        
    #warning 重点(以后经常用) 难点(计算难)  疑点
        //3. 计算文字的大小、动态调整label的大小
        //思路: 计算这个label 要显示的内容。所占用的大小,然后修改label的大小。
        
        //计算文字所占用的大小
        //font: 表示这个label显示的内容的字体
        //size: 容纳这个字体的容器最大的大小, 高 我们给一个极大值(FLT_MAX)
        //换行label.lineBreakMode
        //返回值 CGSize 类型
    
        
    //    float screen_width = [UIScreen mainScreen].bounds.size.width; //屏幕的宽
       CGSize size = [label.text sizeWithFont:label.font
               constrainedToSize:CGSizeMake(label.frame.size.width, FLT_MAX)
                   lineBreakMode:label.lineBreakMode];
        NSLog(@"%lf",size.width);
        NSLog(@"%lf",size.height);
        CGRect  frame = label.frame;
        frame.size.width = 370;
        frame.size.height = 113.6;
        label.frame = frame;
        //修改label 的大小
        //任何视图,如果想修改frame,只能整体修改,不能修改其中的某个一个部分
    //    label.frame.size.height = 1223;//这个代码是错的
        
        
        
        //1.取出一个frame
    //    CGRect frame = label.frame;
        
        // 2.修改这个frame
    //    frame.size.height  = size.height;
        
        //重新替换
    //    label.frame = frame;
    
               //2.贴到窗口上进行显示
          [self.view addSubview:label];
    }
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    @end
    

    一个动态label的实现demo

    #import "ViewController.h"
    
    @interface ViewController ()
    //这个工程,我们想实现一个需求,一个会飞的label
    //实现:我们启动一个计时器,每隔一段时间来刷新这个label 的位置即可
    //需要一个UIlabel对象
    //需要一个NSTimer 对象;
    {   UILabel *label;
        float xSpeed;
        float ySpeed;
    }
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        xSpeed = 1;
        ySpeed = 1;
        [self createLabel];
        [self createTimer];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    - (void)createLabel{
        //1.实例化
        label = [[UILabel alloc] init];
        
        //2.frame;
        
        label.frame = CGRectMake(0, 0, 100,100);
        
        //3.背景颜色
        label.backgroundColor = [UIColor redColor];
        
        //4.文字
        label.text = @"Fly~";
        
        //5.文字颜色
        label.textColor =  [UIColor whiteColor];
        
        //6.贴到屏幕上
        
        [self.view addSubview:label];
        
        
    }
    
    - (void)createTimer{
        
        //1.实例化一个计时器
        NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fly) userInfo:nil repeats:YES];
        
      //  NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:<#(SEL)#> userInfo:<#(id)#> repeats:<#(BOOL)#>]
        
      //  NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fly) userInfo:nil repeats:YES];
        //2.立即执行
        [timer fire];
        
       
    }
    
    //这个方法, 用来改变label的frame
    - (void) fly{
        //1.先去取出来原有的frame
        
        CGRect frame = label.frame;
        
        //声明两个方向上得速度的绝对值
       
       
        // 2.修改这个frame
        
    //    frame.origin.x + = xSpeed;
    //    frame.origin.y + = ySpeed;
        
        frame.origin.x += xSpeed;
        frame.origin.y += ySpeed;
        NSLog(@"右边%f",frame.origin.x);
        //右边界碰撞
    //    if (frame.origin.x + frame.size.width >= 320){
    //        
    //    }
        
        // 因为我们要适配不同的手机屏幕,所以这里就不能写一个固定的值,而需要通过方法来获取手机屏幕大小
        //获取屏幕的宽
        
        float screen_width = [UIScreen mainScreen].bounds.size.width;
        
         //获取屏幕的高
        float screen_height = [UIScreen mainScreen].bounds.size.height;
        
        if (CGRectGetMaxX(frame) >= screen_width) {
            xSpeed = -xSpeed;//因为到达最右边了,在累加就越界了,隐藏需要减少才行,下面依次类推
        }
        
        //下边界碰撞
        if (CGRectGetMaxY(frame) >= screen_height) {
            
            ySpeed = -ySpeed;
        }
      
        //左边界碰撞
        if (frame.origin.x <= 0)
        {
            
            xSpeed = -xSpeed;
            NSLog(@"左边%lf",frame.origin.x);
        }
        //上边界碰撞
        if (frame.origin.y <= 0)
        {
            
            ySpeed = -ySpeed;
        }
    
        //3.修改完之后,替换
        label.frame = frame;
        
    }
    
    
    @end
    

    相关文章

      网友评论

          本文标题:1.3UILabel

          本文链接:https://www.haomeiwen.com/subject/ybbuiqtx.html