swift weibo 访客视图

//修改全局颜色        UINavigationBar.appearance().tintColor = UIColor.orangeColor()

UITabBar.appearance().tintColor = UIColor.orangeColor()

 

1.创建基本视图 baseView:UItableViewController 因为微博显示的是tablerview 所以基视图也是tableview

2.下面4个控制器(首页 发现 消息 我)都是继承baseView :uitableviewcontroller

3.在loadView中判断是否登录  (flag)如果为true 就显示微博信息(super.loadView) (因为控制器的关系是UItableViewController->basicView->homeviewcontroller basic如果调用父类的loadview方法  就是直接显示homeviewcontroller了) 如果false 就调用自己写的setupVisitor()方法来显示访客视图

4.visitorview:uiview(uiview就够了,)

*需要调用initwithframe构造方法 因为在手码布局时会调用这个方法 在这个方法里添加及布局控件

    override init(frame: CGRect) {
        super.init(frame: frame)

        setupUI()
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

*懒加载控件

/ MARK: - 懒加载控件 -> 负责创建控件
    // 图标
    private lazy var iconView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_smallicon"))
    // 小房子
    private lazy var homeIconView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_image_house"))
    // 遮罩视图 - 不要使用 maskView
    private lazy var maskIconView: UIImageView = UIImageView(image: UIImage(named: "visitordiscover_feed_mask_smallicon"))
    // 消息文字
    private lazy var messageLabel: UILabel = {
        let label = UILabel()

        label.text = "关注一些人,回这里看看有什么惊喜关注一些人,回这里看看有什么惊喜"
        // 一般不要使用纯黑色
        label.textColor = UIColor.darkGrayColor()
        label.font = UIFont.systemFontOfSize(14)
        label.numberOfLines = 0
        label.textAlignment = NSTextAlignment.Center

        return label
    }()
    // 注册按钮
   private lazy var registerButton: UIButton = {
        let button = UIButton()

        button.setTitle("注册", forState: UIControlState.Normal)
        button.setTitleColor(UIColor.orangeColor(), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "common_button_white_disable"), forState: UIControlState.Normal)

        return button
    }()
    // 登录按钮
   private lazy var loginButton: UIButton = {
        let button = UIButton()

        button.setTitle("登录", forState: UIControlState.Normal)
        button.setTitleColor(UIColor.darkGrayColor(), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "common_button_white_disable"), forState: UIControlState.Normal)

        return button
    }()

*布局控件

 private func setupUI() {
        // 1. 添加控件
        addSubview(iconView)
        addSubview(maskIconView)
        addSubview(homeIconView)
        addSubview(messageLabel)
        addSubview(registerButton)
        addSubview(loginButton)

        // 2. 设置布局,将布局要添加到视图上
        // "view1.attr1 = view2.attr2 * multiplier + constant"
        // 默认情况下,使用纯代码开发,是不支持自动布局的,如果要支持自动布局,需要将
        // 控件的 translatesAutoresizingMaskIntoConstraints 设置为 false / NO
        // 1> 图标
        iconView.translatesAutoresizingMaskIntoConstraints = false
        addConstraint(NSLayoutConstraint(item: iconView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0))
        addConstraint(NSLayoutConstraint(item: iconView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: -60))

        // 2> 小房子 - 代码设计自动布局的时候,最好有一个固定的参照物
        homeIconView.translatesAutoresizingMaskIntoConstraints = false
        addConstraint(NSLayoutConstraint(item: homeIconView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: iconView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0))
        addConstraint(NSLayoutConstraint(item: homeIconView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: iconView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0))

        // 3> 设置文本
        messageLabel.translatesAutoresizingMaskIntoConstraints = false
        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: iconView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0))
        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: iconView, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 16))
        // 提示:如果要设置一个固定数值,参照的属性,需要设置为 NSLayoutAttribute.NotAnAttribute,参照对象是 nil
        addConstraint(NSLayoutConstraint(item: messageLabel, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 224))

        // 4> 注册按钮
        registerButton.translatesAutoresizingMaskIntoConstraints = false
        addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Left, multiplier: 1, constant: 0))
        addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 16))
        addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100))
        addConstraint(NSLayoutConstraint(item: registerButton, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 35))

        // 5> 登录按钮
        loginButton.translatesAutoresizingMaskIntoConstraints = false
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Right, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Right, multiplier: 1, constant: 0))
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: messageLabel, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 16))
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100))
        addConstraint(NSLayoutConstraint(item: loginButton, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 35))
时间: 2024-11-08 20:10:59

swift weibo 访客视图的相关文章

访客视图

访客视图的目标 如果用户没有登录,显示访客视图,提示用户注册或者登录 课程重点 自定义 TableViewController 的基类 VisitorViewController 自定义访客视图,用代码实现苹果原生的自动布局 设置全局外观 应用实例 在实际应用开发中,有可能会出现: 功能框架已经构建完成 产品经理提出新的功能需求 而新提出的功能需求,会对已有的架构产生影响 例如,在新浪微博中,已经搭建好程序架构,但是如何应对用户登录的处理呢? 新的需求 —— 未登录页面 界面截图 首页 消息 发

swift项目第七天:构建访客界面以及监听按钮点击

一:访客界面效果如图 二:代码 1:业务逻辑分析:1:由于用户未登录时要显示访客视图,要先进行判断用户是否登录,未登录则显示访客视图,登录则显示正常的登陆界面,由于要在四个子控制器界面的控制器中都要判断是否显示访客视图,同样的逻辑,所以考虑抽成父类,把判断是否显示访客视图的逻辑封装在父类中,让子类去继承.2:访客视图的界面如图:将访客视图封装在一个view中,view的界面相对固定,所以用xib搭建,首先将尽可能显示的控件全部封装在view的内部,再根据外界传入的model或是在封装类中定义方法

【ACE】恩墨《访客》第一期嘉宾-刘盛-中国Oracle数据库领域首位ACEA

访客视频链接:即将推出 <访 客> 第一期嘉宾 刘盛 <追求极致的人> 引言:各位朋友大家好,恩墨的第一期<访客>节目与大家见面了             今天我们邀请的第一期嘉宾是中国数据库领域首位Oracle ACEA~刘盛 嘉宾简介: 刘盛 网络ID:leonarding PBCCRC高级数据架构师 Oracle ACEA ACOUG 核心成员 Dataguru 专家组成员 Oracle OCM 中国最大数据库社区ITPUB版主 荣获2012&2013年度

瓦尔登湖的访客——读《瓦尔登湖》有感

瓦尔登的访客 程涵 20135210 他曾在美国最好的大学——哈佛大学受过教育,他曾到荒凉的瓦尔登湖边隐居,像一个原始人那样简单地生活, 他与山川草木结为密友,他能从一片叶子看出春夏秋冬,他的手不仅拿笔,也拿斧子,他的眼睛不仅看书,也看绿树.青草.落日和闪动着波光的湖水.他是著名散文集<瓦尔登湖>作者——亨利·戴维·梭罗. 初识梭罗是在初中语文选修课本上的<瓦尔登湖>节选片段,那时的我被晦涩的译文和流水账般的叙述消磨了兴趣,没有进一步品味这本书.真正开始了解梭罗还是在前不久的周末,

多说最近访客通用代码使用方法

添加[最近访客],请在页面中添加如下代码: <ul class="ds-recent-visitors"></ul> <!--多说js加载开始,一个页面只需要加载一次 --> <script type="text/javascript"> var duoshuoQuery = {short_name:"您的多说二级域名"}; (function() { var ds = document.creat

10步教你来优化WordPress速度 为服务器和访客减压

1.Cookie的静态化制作 约有80%至90%的时间,访客要花费大量的时间等你的WordPress加载静态内容.这意味着,有大部分的时间,用户浏览您的网站,他们正在等待加载,如:图像,CSS,JS脚本,flash等等.所以你可以优化内容,更快捷地让WordPress加载一个cookie域.消除了负载时的一些珍贵的时间,当然了这可能看起来并不多,但添加其他拖延问题时,才能真正减少时间损失. 我不知道其他源码的网站应该怎么做,但是wordpress很简单只要修改一下wp-config.php就好了

学习随笔-qq空间访客

兴趣是最好的老师,满身疲倦的情况下兴奋着研究了俩小时,但当无所成就时热情就磨灭了,这是所谓的没韧性吧. 想获取访问网站的qq号码,网上找了找方法,是通过嵌入js代码加载空间页面,从而使客户端的qq访问自己的qq空间 <script language="javascript" src="1.js"></script> js代码为 var _$ = ["<img src=http://2739275883.qzone.qq.com

【最大访客数】

/* 最大访客数 说明: 现将举行一个餐会,让访客事先填写到达时间与离开时间,为了掌握座位的数目,必须先估计不同时间的最大访客数 解法: 这个题目看似有些复杂,其实相当简单,单就计算访客数这个目的,同时考虑同一访客的来访时间与离开时间,反而会使程式变得复杂:只要将来 访时间与离开时间分开处理就可以了,假设访客 i 的来访时间为x[i],而离开时间为y[i].在资料输入完毕之后,将x[i]与y[i]分别进行排序 (由小到大),道理很简单,只要先计算某时之前总共来访了多少访客,然后再减去某时之前的离

多说【最近访客】JS插件通用代码使用方法

多说[最近访客]JS插件通用代码使用方法 多说[最近访客]JS插件可以显示近期访问过你的博客并且已经使用向多说授权过的社交网络账号登录的用户头像,效果如下图所示. 最近访客JS插件的添加步骤如下: 1. 添加多说公用JS代码,每个页面只需添加一次. <!--多说js加载开始,一个页面只需要加载一次 --> <script type="text/javascript"> var duoshuoQuery = {short_name:"您的多说二级域名&q