iOS_28仿QQ空间登录与退出

iOS_28仿QQ空间登录与退出,第1张

概述最终效果图如下: 注意事项: 输入框的return Key Main.storyboard中为 LoginController 设置一个storyboardID, 以便可以在代码中通过Storyboard对象实例,创建Main.storyboard里面的控制器 仿QQ窗口抖动 dispach_after模拟延时 输入框的return Key的不同处理方式 Login控制器代码 //// Log

最终效果图如下:



注意事项:

输入框的return Key

Main.storyboard中为 LoginController 设置一个storyboardID,

以便可以在代码中通过Storyboard对象实例,创建Main.storyboard里面的控制器






仿QQ窗口抖动



dispach_after模拟延时



输入框的return Key的不同处理方式




Login控制器代码

////  LoginController.m//  28_QQ空间////  Created by beyond on 14-9-1.//  copyright (c) 2014年 com.beyond. All rights reserved.//  Main.storyboard中初始化时的控制器,登录控制器 验证成功后,跳转至主控制器#import "LoginController.h"// 验证成功后,跳转至主控制器#import "BeyondVIEwController.h"@interface LoginController () <UITextFIEldDelegate>#pragma mark - 拖线 属性// 登录框整体@property (weak,nonatomic) IBOutlet UIVIEw *loginContentVIEw;// 帐号@property (weak,nonatomic) IBOutlet UITextFIEld *usernameFIEld;// 密码@property (weak,nonatomic) IBOutlet UITextFIEld *passwordFIEld;// 登录按钮@property (weak,nonatomic) IBOutlet UIbutton *loginBtn;// 记住密码btn@property (weak,nonatomic) IBOutlet UIbutton *rememberPwdBtn;// 自动登录btn@property (weak,nonatomic) IBOutlet UIbutton *autoLoginBtn;// 加载中...@property (weak,nonatomic) IBOutlet UIActivityIndicatorVIEw *activityIndicator;#pragma mark - 拖线 方法// 登录按钮被点击- (IBAction)loginBtnClicked;// 点击了记住密码 或 自动登录- (IBAction)checkBoxBtnClicked:(UIbutton *)sender;@end@implementation LoginController- (voID)vIEwDIDLoad{    [super vIEwDIDLoad];    // 1.设置登陆控制器 的背景色 为全局深黑色    self.vIEw.backgroundcolor = kGlobalBgcolor;        // 2.设置登录按钮不同状态下的背景    [self.loginBtn setBtnBgimgFornormal:@"login_button_normal" highlightedname:@"login_button_pressed"];}// 点击屏幕空白处,退出键盘- (voID)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{    [self.vIEw endEditing:YES];}#pragma mark - 拖线方法// 点击了记住密码 或 自动登录- (IBAction)checkBoxBtnClicked:(UIbutton *)sender{    // 设置勾选 或 取消勾选    sender.selected = ! sender.isSelected;    // 重要~~~    if (sender == self.rememberPwdBtn && !sender.isSelected) {        // 取消了“记住密码”,这时候 就可以同时取消 自动登录了,因为用户不想记住密码,自然就无法实现 自动登录功能        self.autoLoginBtn.selected = NO;    } else if (sender == self.autoLoginBtn && sender.isSelected) {        // 当用户 选中了“自动登录”,那么表示他想自动登录,那么可以同时把记住密码勾选上        self.rememberPwdBtn.selected = YES;    }}// 点击登录按钮- (IBAction)loginBtnClicked{    // 1.验证帐号    Nsstring *account = self.usernameFIEld.text;    if (account.length == 0) {        [self showError:@"请输入帐号"];        return;    }        // 2.验证密码    Nsstring *password = self.passwordFIEld.text;    if (password.length == 0) {        [self showError:@"请输入密码"];        return;    }        // 3.发送请求    self.vIEw.userInteractionEnabled = NO;    [self.activityIndicator startAnimating];        // 模拟延时    CGfloat delay = 2.0;    dispatch_after(dispatch_time(disPATCH_TIME_Now,(int64_t)(delay * NSEC_PER_SEC)),dispatch_get_main_queue(),^{        // 4.登录完毕(请求完毕)        [self.activityIndicator stopAnimating];        self.vIEw.userInteractionEnabled = YES;                // 5.账号密码同时为123才是正确        if (![account isEqualToString:@"123"]) {            [self showError:@"帐号或密码错误"];            return;        }        if (![password isEqualToString:@"123"]) {            [self showError:@"帐号或密码错误"];            return;        }                // 6.登录成功  跳转到主页        self.vIEw.window.rootVIEwController = [[BeyondVIEwController alloc] init];    });}#pragma mark - 自定义方法// 提示错误信息- (voID)showError:(Nsstring *)errorMsg{    // 1.d框提醒    UIAlertVIEw *alert = [[UIAlertVIEw alloc] initWithTitle:@"登录失败" message:errorMsg delegate:nil cancelbuttonTitle:@"确定" otherbuttonTitles:nil,nil];    [alert show];        // 2.仿QQ窗口抖动    // 核心动画之 关键帧动画    CAKeyframeAnimation *shakeAnim = [CAKeyframeAnimation animation];    // 哪一个成员属性 需要动画,答:x    shakeAnim.keyPath = @"transform.translation.x";    shakeAnim.duration = 0.15;    CGfloat delta = 10;    // 数组,指定每一帧时的x值    shakeAnim.values = @[@0,@(-delta),@(delta),@0];    shakeAnim.repeatCount = 2;    // 让vIEw所在的图层执行 关键帧动画    [self.loginContentVIEw.layer addAnimation:shakeAnim forKey:nil];}#pragma mark - UITextFIEld代理方法// 控制器 键盘上returnKey在不同输入框下的作用,如Next 或 Done- (BOol)textFIEldShouldReturn:(UITextFIEld *)textFIEld{    if (textFIEld == self.usernameFIEld) {        // 帐号输入框(Next)        [self.passwordFIEld becomeFirstResponder];    } else {        // 密码框(Done),调用自定义方法,执行登录        [self loginBtnClicked];    }    return YES;}@end


退出,并且回到Main.storyboard里面的初始的登录控制器

总结

以上是内存溢出为你收集整理的iOS_28仿QQ空间登录退出全部内容,希望文章能够帮你解决iOS_28仿QQ空间登录与退出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)