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. ...
随机推荐
- HTML: margin詳解
margin:10px; 設置塊元素的上,右,下,左方向的值同爲10px margin:10px 30px; 設置塊元素的上和下爲10px,左和右爲30px; margin:10px 20px 30p ...
- nginx生产配置
user www www; worker_processes 8; error_log /data/logs/nginx_error.log crit; pid /usr/local/webserve ...
- 【转】UML图中类之间的关系
原文:http://blog.csdn.net/hguisu/article/details/7609483 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
- jira attachement directorey,workflow---extention.
workflow---extention. https://confluence.atlassian.com/jirakb/jira-miscellaneous-workflow-extensions ...
- 介绍UDF,以及完成大小写的转换
一:概述 1.UDF 用户自定义函数,用java实现自定义的需求 2.UDF的类型 udf:一进一出 udaf:多进一出 udtf:一进多出 3.udf的实现步骤 继承UDF类 实现evaluate的 ...
- Spring @Resource、@Autowired、@Qualifier的区别
@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入: @Resource注解是J2EE提供,而@Autowired是由Spring提供,故减少系统对s ...
- C/C++ 获取汉字拼音首字母
#include <stdint.h> #include <stdio.h> #include <ctype.h> #include <string.h> ...
- php---apache的A/B测试
A/B测试 A/B测试是一种新兴的网页优化方法,可以用于增加转化率注册率等网页指标..A/B测试的目的在于通过科学的实验设计.采样样本代表性.流量分割与小流量测试等方式来获得具有代表性的实验结论,并确 ...
- mysql基本sql语句大全(提升用语篇)
1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1(仅用于SQlServer) 法二:s ...
- 长宽广州地区DNS
网络又抽风了,发现时DNS的问题. 打客服电话问到了长宽广州的DNS: 首选:211.162.62.1备用:211.162.62.61