Swift实战-小QQ(第1章):QQ登录界面
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登录界面的更多相关文章
- Swift实战-小QQ(第2章):QQ侧滑菜单
QQ侧滑实现架构:需要建立以下几个ViewController:1.XQBaseViewController 2.LeftViewController3.RightViewController4.Co ...
- Swift实战-小QQ(第3章):QQ主界面布局
1.导航栏外观设定*在AppDelegate.swift文件中的didFinishLaunchingWithOptions方法添加以下代码 func application(application: ...
- Flask实战第45天:完成前台登录界面
我们的注册页面和登录页面有很多相似之处,因此,也可以基于一个模板来实现. 首先创建一个模板html,命名为front_signbase.html, 然后修改注册页面front_signup.html, ...
- Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件
大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: .QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于 ...
- Python爬虫实战:使用Selenium抓取QQ空间好友说说
前面我们接触到的,都是使用requests+BeautifulSoup组合对静态网页进行请求和数据解析,若是JS生成的内容,也介绍了通过寻找API借口来获取数据. 但是有的时候,网页数据由JS生成,A ...
- .NET Core实战项目之CMS 第九章 设计篇-白话架构设计
前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...
- Android中集成QQ登陆和QQ好友分享及QQ空间分享
extends : http://blog.csdn.net/arjinmc/article/details/38439957 相关官方文档及下载地址: 如果只用分享和登陆,用lite包就可以,体积小 ...
- WPF开发实例——仿QQ登录界面
原文:WPF开发实例--仿QQ登录界面 版权声明:本文为博主原创文章,如需转载请标明转载地址 http://blog.csdn.net/u013981858 https://blog.csdn.net ...
- JavaSwing仿QQ登录界面,注释完善,适合新手学习
使用说明: 这是一个java做的仿制QQ登录界面,界面仅使用一个类, JDK版本为jdk-11 素材包的名字为:素材(下载)请在项目中新建一个名字为“素材”的文件夹. 素材: https://pan. ...
随机推荐
- 奥迪--Q3
-型号:Q3 -价格:23-35W -动力:1.4T/2.0T -变速箱:6挡双离合/7挡双离合 -长宽高:4.40,1.84,1.59 -油箱:64L -发动机:EA888 -大灯:氙气(选装LED ...
- space ship
按下向上箭头,飞船速度不是一直增加 而且飞船移动的方向是固定的不是有角度的 按下箭头飞船可以飞了,但是不减速 加一个keyup handler就可以啦!可以一直加速,不按的时候也可以减速 按下向下按钮 ...
- PHP其它常用函数;<<<面向对象(OPP)的三大特性:封装、继承、加态:>>> <----面试题 ;构造方法、析构方法,魔术方法、set、get方法;静态;抽象类;接口
PHP其它常用函数: 赋值:$r->name = "元素"; 取值: echo $r->name; count() 计算数组中的元素数目或对象中 ...
- 【Android开发学习笔记】【高级】【随笔】插件化——资源加载
前言 上一节我们针对插件最基本的原理进行了一个简单的demo实现,但是由于插件的Context对象被宿主所接管,因此无法加载插件程序的资源.那么如何解决这个问题捏? 有人提出这样的方案:将apk中的资 ...
- 使用node.js的bodyParser中间件读取post数据解析
昨天我们使用的网关转发数据时出了点问题! 情景是这样的,另一方以Post的形式向我的node.js服务推送JSON数据.但是使用bodyParser中间件后,在req.body中拿不到任何信息. 代码 ...
- Mac下安装和配置mongoDB
mac下的mongodb下载安装比较简单,主要有两种方式,一种是下载压缩包解压,另一种是通过npm或者homebrew命令安装,这里就不赘述了, 复杂的在于mongodb运行环境的配置(若未配置运行环 ...
- [LeetCode]题解(python):039-Combination Sum
题目来源 https://leetcode.com/problems/combination-sum/ Given a set of candidate numbers (C) and a targe ...
- c#导出excel(转)
C#导出Excel文件实例代码 2010-08-03 14:10:36| 分类: 软件编程 | 标签:excel c#导出excel |字号大中小 订阅 /// <summary> ...
- http请求及模拟浏览器发送http请求
/** *测试新增图片 * @throws IOException * @throws HttpException * @throws SAXException * @th ...
- jquery的hover mouseover mouseout mouseenter mouseleave的区别
jquery的hover mouseover mouseout mouseenter mouseleave的区别 1.mouseover mouseout mouseover - 鼠标指针经过任何子元 ...