1.新建小QQ项目

2.将所需用到的图片资源(resource)文件夹,添加到项目中.并新建一个登录页面:LoginViewController.swift

3.修改LoginViewController.swift代码为

import UIKit
class LoginViewController: UIViewController { // }

4.将Main.storyboard的默认的view视图,关联为LoginViewController控制器,并拖控件进入view视图布局.

简单布局如下,

5.登录按钮圆角

 class LoginViewController: UIViewController {
//登录按钮
@IBOutlet weak var btnLogin: UIButton!
override func viewDidLoad() {
//
btnLogin.layer.cornerRadius=4.0
btnLogin.layer.masksToBounds=true
}
}

6.运行一下看看效果:

7.完善App的LaunchScreen.xib和Logo图标设置
将LaunchScreen视图中的Label删除掉,只放一张图片即可

找到Supoorting Files目录下的Info.plist文件双击打开,添加节点:Bundle display name为“小QQ” ,并添加一个节点Icon file 设置为"AppIcon-129x29@2x.png"也就是你要设置的Logo的图片名称。

8.添加初始动画,
*将“帐号view”,“密码view”和“登录按钮” 关联插座(IBOutlet)到controller

    @IBOutlet weak var btnLogin: UIButton!//登录按钮
@IBOutlet weak var accountView: UIView!//帐号组View
@IBOutlet weak var passwordView: UIView!//密码组View
@IBOutlet weak var accountBoxView: UIView!//帐号盒子View

*在viewDidLoad方法里添加初始动画代码

 override func viewDidLoad() {
//登录按钮圆边框
btnLogin.layer.cornerRadius=4.0
btnLogin.layer.masksToBounds=true
//让2个view和1个button从下向上移
UIView.animateWithDuration(0.8, animations: { () -> Void in
//上移值
let upValue:CGFloat=200.0
//accountView上移
var accountFrame:CGRect=self.accountView.frame
accountFrame.origin.y=accountFrame.origin.y-upValue
self.accountView.frame=accountFrame
//passwordView上移
var passwordFrame:CGRect=self.passwordView.frame
passwordFrame.origin.y=passwordFrame.origin.y-upValue
self.passwordView.frame=passwordFrame
//btnLogin上移
var btnLoginFrame:CGRect=self.btnLogin.frame
btnLoginFrame.origin.y=btnLoginFrame.origin.y-upValue
self.btnLogin.frame=btnLoginFrame
})
}

9.展开与收起accountBox(帐号盒子:用来显示已登录过的帐号,可进行帐号切换)

*在storyboad的LoginViewController的View视图上,添加一个UIView 命名为:accountBoxView

*将其关联插座(IBOutlet)到controller

*将帐号右侧的下拉按钮关联动作(IBAction)让它执行:showAccountBox方法:

  //点击下拉按钮弹出/隐藏帐号盒
@IBAction func showAccountBox(sender: UIButton) {
if(sender.selected)
{
UIView.animateWithDuration(0.8, animations: { () -> Void in
//1.将accountbox隐藏出来
self.accountBoxView.hidden=false
//2.将密码组往上移
var passwordFrame:CGRect=self.passwordView.frame
passwordFrame.origin.y=passwordFrame.origin.y-82.0
self.passwordView.frame=passwordFrame
//3.将按钮往上移
var btnLoginFrame:CGRect=self.btnLogin.frame
btnLoginFrame.origin.y=btnLoginFrame.origin.y-82.0
self.btnLogin.frame=btnLoginFrame
}) }else{
UIView.animateWithDuration(0.8, animations: { () -> Void in
//1.将accountbox显示出来
self.accountBoxView.hidden=false
//2.将密码组往下移
var passwordFrame:CGRect=self.passwordView.frame
passwordFrame.origin.y=passwordFrame.origin.y+82.0
self.passwordView.frame=passwordFrame
//3.将按钮往下移
var btnLoginFrame:CGRect=self.btnLogin.frame
btnLoginFrame.origin.y=btnLoginFrame.origin.y+82.0
self.btnLogin.frame=btnLoginFrame
})
}
//将按钮选中状态改变
var nowState:Bool=self.btnLogin.selected
if(nowState==true)
{
self.btnLogin.selected=false
}else
{
self.btnLogin.selected=true
}
}

源码下载地址:http://download.csdn.net/detail/fangwulongtian/8583251

转载请注明来源:http://www.cnblogs.com/wuxian/p/4322627.html

Swift实战-小QQ(第1章):QQ登录界面的更多相关文章

  1. Swift实战-小QQ(第2章):QQ侧滑菜单

    QQ侧滑实现架构:需要建立以下几个ViewController:1.XQBaseViewController 2.LeftViewController3.RightViewController4.Co ...

  2. Swift实战-小QQ(第3章):QQ主界面布局

    1.导航栏外观设定*在AppDelegate.swift文件中的didFinishLaunchingWithOptions方法添加以下代码 func application(application: ...

  3. Flask实战第45天:完成前台登录界面

    我们的注册页面和登录页面有很多相似之处,因此,也可以基于一个模板来实现. 首先创建一个模板html,命名为front_signbase.html, 然后修改注册页面front_signup.html, ...

  4. Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件

    大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: .QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于 ...

  5. Python爬虫实战:使用Selenium抓取QQ空间好友说说

    前面我们接触到的,都是使用requests+BeautifulSoup组合对静态网页进行请求和数据解析,若是JS生成的内容,也介绍了通过寻找API借口来获取数据. 但是有的时候,网页数据由JS生成,A ...

  6. .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...

  7. Android中集成QQ登陆和QQ好友分享及QQ空间分享

    extends : http://blog.csdn.net/arjinmc/article/details/38439957 相关官方文档及下载地址: 如果只用分享和登陆,用lite包就可以,体积小 ...

  8. WPF开发实例——仿QQ登录界面

    原文:WPF开发实例--仿QQ登录界面 版权声明:本文为博主原创文章,如需转载请标明转载地址 http://blog.csdn.net/u013981858 https://blog.csdn.net ...

  9. JavaSwing仿QQ登录界面,注释完善,适合新手学习

    使用说明: 这是一个java做的仿制QQ登录界面,界面仅使用一个类, JDK版本为jdk-11 素材包的名字为:素材(下载)请在项目中新建一个名字为“素材”的文件夹. 素材: https://pan. ...

随机推荐

  1. using System.Diagnostics; 日志操作

    using System.Diagnostics 命名空间 包含了能够与系统进程 事件日志 和性能计数器进行交互的类 一般用于帮助诊断和调试应用程序 例如 Debug类用于帮组调试代码 Process ...

  2. dynamic-link library shared library of functions and resources

    https://msdn.microsoft.com/en-us/library/1ez7dh12.aspx A dynamic-link library (DLL) is an executable ...

  3. 【转】Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行.与 ...

  4. 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触

    http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...

  5. ubuntu下c/c++开发环境配置

    刚转好的UBUNTU14.04.01 TLS . 试了一下GCC,结果如下不能编译 gcc -o hello hello.cpp gcc: error trying to exec 'cc1plus' ...

  6. Android高级之第十一讲Hybird开发

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 随着移动端应用平台的兴起,需求和交互方式的多样化,H5开发逐渐在移动端流行起来:常见的移动产品有We ...

  7. Android 代码中文字在手机上显示乱码问题解决方法

    在学习Android过程中,用于测试时发现,代码中的中文在真机上会显示乱码, 网上查阅了些资料,参考如下: http://www.androidchina.net/3024.html http://b ...

  8. 设计模式:访问者模式(Visitor)

    定  义:表示作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 结构图: 示例: . 状态类: //状态的抽象类 abstract class Act ...

  9. Magento - Rewrite机制一窥

    看一个url例子 http://localhost/magento/index.php/customer/account/login 这里假定http://localhost/magento/ 是ma ...

  10. asp.net mvc 简单搜索功能

    View中代码: <input type="text" class="searchText" id="searchText"/> ...