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

原创 2016年08月30日 11:29:38

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS MapKit 输入城市名获取经纬度显示地图

iOS mapkit 通过城市名得到经纬度然后显示地图
  • qq_22555381
  • qq_22555381
  • 2015年08月10日 20:49
  • 904

通过经纬度获取城市名

《转载》http://blog.csdn.net/litton_van/article/details/7101422 [java] view plaincopyprint? ...
  • flyingfox023
  • flyingfox023
  • 2014年03月03日 16:41
  • 980

Swift - 将定位获取的经纬度转换为城市名

通过调用系统的定位地图框架获取经纬度,并将经纬度转换为自己所需要的对应城市名!...
  • hrsqs110
  • hrsqs110
  • 2015年08月25日 17:36
  • 3056

根据IP获取城市名称

读取纯真IP数据库的公用组件QQWry.NET 这是一个读取纯真IP数据库的公用组件接口,我是通过luma的《纯真IP数据库格式详解》了解了纯真IP数据库数据格式,并且基于网络上的一个I...
  • lifei_7981536
  • lifei_7981536
  • 2012年04月20日 11:55
  • 1146

ios 通过经纬度定位城市,通过城市名定位经纬度

通过经纬度定位城市: CLGeocoder * geoCoder = [[[CLGeocoder alloc] init] autorelease];     [geoCoder reve...
  • birthmarkqiqi
  • birthmarkqiqi
  • 2015年05月05日 16:27
  • 302

用CLLocationManager得到当前城市和国家的名称

原问题来自于CSDN问答频道,详细解决方案见:http://ask.csdn.net/questions/1706 问题描述: 通过使用CLLocationManager得到当前城市和国家的名...
  • CSDN_Ask
  • CSDN_Ask
  • 2013年03月15日 13:21
  • 4657

jpinyin 将城市名汉字转化为拼音

jpinyin 将城市名汉字转化为拼音以前一直使用pinyin4j将汉字转化为拼音,但有一些多音字,城市名等,不能完全正确地解析出来,今天发现还有一个jpinyin-1.0.jar,能够比较好地处理城...
  • salonzhou
  • salonzhou
  • 2015年11月23日 16:26
  • 3470

网页版百度地图--根据城市名定位

根据城市名定位 body, html{width: 100%;height: 100%;margin:0;font-family:"微软雅黑";} #allmap{height:500...
  • u011630575
  • u011630575
  • 2015年05月29日 20:39
  • 2072

python3.5爬虫实例:根据城市名称来获取该城市最近七天的天气预报

#抓取天气网站最近7天的天气情况,写入文件并在控制台显示 from bs4 import BeautifulSoup #用来代替正则表达式取源码中相应标签的内容 import random imp...
  • haijiege
  • haijiege
  • 2017年11月08日 11:30
  • 145

对城市名搜索(汉字、拼音)功能的改进 / 小程序城市区县定位模块改进

支持搜索335个城市(及相应级别地区)。截至目前,最新的国家统计局2016年统计年鉴中,地级市291个,地级行政区划334个。城市/区县定位模块里的一个功能的改进。 ![](http://img.bl...
  • Beijiyang999
  • Beijiyang999
  • 2017年09月14日 21:21
  • 233
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swift实现导航栏上的城市名(富文本)
举报原因:
原因补充:

(最多只允许输入30个字)