swift实现导航栏上的城市名(富文本)

GitHub地址:https://github.com/zyfmeng/SwiftCityListShow

func showCity(cityName:String){
        //实现富文本
        var string:NSMutableAttributedString
        string = NSMutableAttributedString(string: cityName)
        
        //进行图文混排
        var textAttachment:NSTextAttachment
        textAttachment = NSTextAttachment()
        textAttachment.image =UIImage(named:"f_flagdown02@2x")
        textAttachment.bounds =CGRectMake(0,0,11,8);
        var textAttachmentString:NSAttributedString
        textAttachmentString = NSAttributedString(attachment: textAttachment)
//        //判断选择的城市名称长度是否大于5个字符的长度,如果大于五个字符就取前四个字符,然后再在最后添加一个图标
        if (string.length >=5) {
            //去前四个字符
            var str:NSAttributedString
            str = NSAttributedString()
            str = string.attributedSubstringFromRange(NSMakeRange(0,4))
            //将NSAttributedString类型转换成NSString类型
            let cityString:String = str.string;
            string = NSMutableAttributedString(string:"\(cityString)...")
        }
        
        //在城市名称后插入图片
        string.insertAttributedString(textAttachmentString, atIndex: string.length)
        
        //自定义按钮
        let btn =UIButton.init(type:UIButtonType.RoundedRect)
        btn.frame =CGRectMake(0,0,70,30);
        btn.backgroundColor =UIColor.redColor()
        btn.addTarget(self, action:#selector(navBtnClick), forControlEvents: UIControlEvents.TouchUpInside)
        let lbText:UILabel
        lbText = UILabel()
        lbText.frame =CGRectMake(0,0, btn.frame.size.width+10, btn.frame.size.height)
        lbText.attributedText = string
        lbText.textColor =UIColor.whiteColor()
        lbText.font =UIFont.systemFontOfSize(13)
        btn.addSubview(lbText)
        btn.backgroundColor =UIColor.clearColor()
        self.navigationItem.leftBarButtonItem =UIBarButtonItem.init(customView: btn)
    }
    //城市名称按钮触发事件
    func navBtnClick(){
        let citySelectVC =CitySelectViewController()
        citySelectVC.hidesBottomBarWhenPushed =true
        citySelectVC.cityNameBlock = {cityNamein
            self.showCity(cityName)
        }
        self.navigationController?.pushViewController(citySelectVC, animated:true)
    }

效果图
image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值