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 Swift&OC 模仿主流App 实现滑动视图隐藏导航栏

简单直接上图上代码 -.- 一个GIF图5M?@property (nonatomic, strong) UITableView *tableViewScroll; @property (nonato...

swift实现图片下拉放大,导航栏渐变效果

最近的一个项目需要实现图片下拉放大的效果,并且导航栏有渐变的效果。这种效果在很多App里面已经很常见了,体验也比较好。今天就自己写了一个。先上图看看效果。 做的比较粗糙,但是基本的效果还是实现了的...

Swift自定义导航栏返回按钮

如何去除swift系统自带的导航栏返回按钮?可以自定义返回按钮在swift中,怎么替换系统自带的导航栏返回按钮?比如说我要替换成一张返回按钮图片,点击返回到上一页首先,看一下系统自带的导航栏返回按钮的...

含有导航栏的视图里tableView的坐标问题(swift代码理论和OC相通)

含有导航栏的视图里tableView的坐标问题(swift代码理论和OC相通) self.edgesForExtendedLayout self.navigationController!.navi...

IOS Swift3.0自定义导航栏(UINavigation)

从学IOS开始到现在已经半年了,也独立做过两个项目,都是涉及蓝牙方面的通信. 在我开发过程中遇到一些问题,然后寻找到的解决方案分享给大家也是开年的第一篇希望能过帮助大家。在我们开发程序过程中不可能都理...

Swift UI专项训练34 TabBar底部导航栏

TabBar大家应该不会陌生,也是我们经常接触的控件,与navigation类似。首先来看下它的属性: Background用来摄住TabBar的背景图片。 Shadow设置阴影。 Selec...

用Swift在导航栏上“镶嵌”一个搜索框

用Swift在导航栏上“镶嵌”一个搜索框如何用Swift在NavigationBar上放一个SearchBar呢?
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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