欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

ios实现navigationItem的titleLabel双行显示代码教程

程序员文章站 2023-02-02 09:54:55
要实现这个功能其实有很多方法,我这里介绍两种方法来实现,一种是通过我们创建一个view,然后往这个view里面加入两个label,然后我们再设置自动布局的约束 //设置titleview...

要实现这个功能其实有很多方法,我这里介绍两种方法来实现,一种是通过我们创建一个view,然后往这个view里面加入两个label,然后我们再设置自动布局的约束

ios实现navigationItem的titleLabel双行显示代码教程

 //设置titleview
      let titleview = uiview(frame: cgrect(x: 0, y: 0, width: 200, height: 32))
      
       
      //导航栏的titleview为我们自定义的titleview
        navigationitem.titleview = titleview
       
        ///创建titlelabel,就是发微博的label
        let titlelabel:uilabel = uilabel(title: "发动态", color: uicolor.black, fontsize: 15)
        
        ///创建namelabel
        let namelabel:uilabel = uilabel(title: "哈哈哈", 
        color: uicolor.lightgray, fontsize: 13)
        
        //添加子控件
        titleview.addsubview(titlelabel)
        
        titleview.addsubview(namelabel)
        
        //titlelabel设置自动布局
        titlelabel.mas_makeconstraints { (make) in
            //设置中心点x的自动布局
            make?.centerx.mas_equalto()(titleview.mas_centerx)
            //设置顶部的自动布局
            make?.top.mas_equalto()(titleview.mas_top)
        }
        //设置namelabel的自动布局
        namelabel.mas_makeconstraints { (make) in
            //设置中心点x的布局
            make?.centerx.mas_equalto()(titleview.mas_centerx)
            //设置顶部的自动布局
            make?.top.mas_equalto()(titlelabel.mas_bottom)
            //设置底部的自动布局
            make?.bottom.mas_equalto()(titleview.mas_bottom)
        }
        
    }
另外一种就是通过label来显示,然后通过设置label的attributedtext属性来进行设置,换行我们这里可以通过\n,换行符来做
 //创建一个label
    uilabel * titleview=[[uilabel alloc]init];
    
    //显示宽高
    titleview.w=180;
    titleview.h=44;
    
    //设置文字居中显示
    titleview.textalignment=nstextalignmentcenter;
    
    //设置titlelabel自动换行
    titleview.numberoflines=0;
    
    //设置发微博的prefix
    nsstring * prefix=@"发动态";
    nsstring * name = @"哈哈哈"  
   //获取标题的字符串
    nsstring * str=[nsstring stringwithformat:@"%@\n%@",prefix,name];
    //创建一个带有属性的字符串比如说颜色,字体等文字的属性
    nsmutableattributedstring * attrstr=[[nsmutableattributedstring alloc]initwithstring:str];
    
    //设置name的字体大小
    [attrstr addattribute:nsfontattributename value:[uifont systemfontofsize:12] range:[str rangeofstring:name]];
    //设置发动态的字体大小
    [attrstr addattribute:nsfontattributename value:[uifont systemfontofsize:13] range:[str rangeofstring:prefix]];
    //设置name的颜色
    [attrstr addattribute:nsforegroundcolorattributename value:[uicolor graycolor] range:[str rangeofstring:name]];
    
    //label中也可以携带图片
    //    nstextattachment * attachment=[[nstextattachment alloc]init];
    //    attachment.image=[uiimage imagenamed:@""];
    //    nsattributedstring * str2=[nsattributedstring attributedstringwithattachment:attachment];
    //    [attrstr appendattributedstring:str2];
    
    //设置有属性的text
    titleview.attributedtext=attrstr;
    //设置导航栏的titleview
    self.navigationitem.titleview=titleview;