关闭

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

标签: swift城市名城富文本
52人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2720次
    • 积分:162
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类