提示效果

关于iOS开发提示效果是一个很常见的技术,比如我们平时点击一个按钮,实现回馈,或者发送网络请求的时候!

技术点:

一:View

UIAlertView

UIActionSheet

二:控制器

UIAlertController

三:第三方库

SVProgressHUD

MBProgressHUD

下面是主界面:

首先我们来看看系统自带的一些提示框(View)

一::UIAlertView

1:创建UIalertView(这里只说纯代码创建的方式)

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示框" message:@"请选择" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:@"取消", nil];
     [alert show];

当我们点击对应地方就会弹出一个提示框

如果我们需要实现监听点击那一个按钮就需要遵守协议,并且实现相应的代理方法:

遵守的协议:  UIAlertViewDelegate

实现代理方法,这里我们只实现了一个点击相应按钮的代理监听方法,平时开发中也只需要实现这一个方法,除非有特别的需求

 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
 {
     NSLog(@"UIAlertView被点击");
 }

二:UIActionSheet

步骤同样和上面一样

:创建UIActionSheet(这里显示他使用的不是show是showInView)

 UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"提示框" delegate:self cancelButtonTitle:@"删除" destructiveButtonTitle:@"更多" otherButtonTitles:@"确定", nil];
     [action showInView:self.view];

遵守的协议:  UIActionSheetDelegate

实现响应的代理方法:

 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
 {
     NSLog(@"UIActionSheet被点击");
 }

实现之后显示的界面如下

三:UIAlertController

在ios中新增了一个控制器,用来替代前面两个提示框的,不过前面两个是View,而这个是控制器,使用方法更加简单,而且可以包含前面两种。

1:创建UIAlertController着方法有两种

方法一:

 UIAlertController *alt = [[UIAlertController alloc] init];
     [alt addAction:[[UIAlertAction alloc] init]];
     [alt addAction:[UIAlertAction actionWithTitle:@"title" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
         NSLog(@"iCocos");
     }]];
     alt.title = @"klasdhgk";
     alt.message = @"alukngm";

     [self presentViewController:alt animated:YES completion:^{
         NSLog(@"iCocos");
     }];

方法二:

     UIAlertController *al = [UIAlertController alertControllerWithTitle:@"lakdhsg" message:@"adsfgh" preferredStyle:UIAlertControllerStyleAlert];

     [self presentViewController:al animated:YES completion:nil];

上面有两个地方需要注意的,

1)方法一种使用Addaction添加我们需要的项

2)presentViewController:animated:completion方法适用于弹出控制器的,在后面做项目的时候会经常用到,所以这里需要留意

四:第三方库SVProgressHUD

使用这个库之前我们需要在github上面下载这个Demo,并且将里面的需要的文件拖到我们的项目中

然后就可以直接使用了,在相应的代码处直接使用类调用久可以:

 - (IBAction)S1:(id)sender {    //直接显示
     [SVProgressHUD show];
 }

 - (IBAction)s2:(id)sender {    //显示文字(错误)
     [SVProgressHUD showErrorWithStatus:@"iCocos"];
 }

 - (IBAction)s3:(id)sender {
     //显示进度条
     [SVProgressHUD showProgress:1.0];
 }

 - (IBAction)s4:(id)sender {    //显示图片
     [SVProgressHUD showImage:[UIImage imageNamed:@"37x-Checkmark.png"] status:@"成功"];
 }

简便方法显示和隐藏

     /*
 //    [SVProgressHUD show];
 //    [SVProgressHUD showWithStatus:@"正在拼命加载"];
 //    [SVProgressHUD dismiss];

 //    [SVProgressHUD showErrorWithStatus:@"错误"];
 //    [SVProgressHUD showSuccessWithStatus:@"正确"];

     [SVProgressHUD showWithStatus:@"正在拼命加载" maskType:SVProgressHUDMaskTypeBlack];
      */

这个框架使用非常简单,但是功能不够完善,下面就介绍一个更加好用的框架MBProgressHUD

五:MBProgressHUD

这个框架相对SVPMBProgressHUD使用起来没有那么简单,但是也不会有多难,不过特可以实现更多的功能,而且如果有需要我们可以直接修改他的文件来得到我们想要的效果

在github上面下载好了之后导入这个框架

 - (IBAction)h1:(id)sender {
     //直接在View上面显示(类方法)
     [MBProgressHUD showHUDAddedTo:self.view animated:YES];
 }

 - (IBAction)h2:(id)sender {
     //实例方法,直接显示
     [[MBProgressHUD alloc] show:YES];
 //    [[MBProgressHUD alloc] hide:YES];
 }

 - (IBAction)h3:(id)sender {
     //显示并且执行我们想要的代码
     [[MBProgressHUD alloc] showWhileExecuting:@selector(Runing) onTarget:self withObject:nil animated:YES];
 }
 -(void)Runing
 {
     NSLog(@"showing");
 }

我们一般实现的就是上面的几个方法,当然如果你想更加深入的学习可以直接查看文档,如果你真的闲的蛋疼的话可以自己写一套来用,也可以装装逼不是吗?

笔者简单的实现了一下(不是因为蛋疼噢)

 // 1.创建父控件
     UIView *cover = [[UIView alloc] init];
     cover.backgroundColor = [UIColor colorWithRed: green: blue: alpha:0.5];
     cover.frame = CGRectMake(, , , );
     cover.center = self.view.center;

     // 修改父控件为圆角
     cover.layer.cornerRadius = ;
     [self.view addSubview:cover];

     // 2.创建菊花
     // 菊花有默认的尺寸
     // 注意: 虽然有默认的尺寸, 但是要想显示必须让菊花转起来
     UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
     activity.center = CGPointMake(cover.frame.size.width * );
     [activity startAnimating];

     [cover addSubview:activity];
     // 3.创建UILabel
     UILabel *label = [[UILabel alloc] init];
     //    label.backgroundColor = [UIColor purpleColor];
     label.textAlignment = NSTextAlignmentCenter;
     label.text = @"正在拼命加载中...";
     label.frame = CGRectMake(, cover.frame.size.height - , cover.frame.size.width, );
     [cover addSubview:label];

/********************************Swift************************************/

笔者在做完任务之后也会偶尔写写swift,毕竟想成为大神这个必须会的,下面就是上面功能的swift实现

 /**************************UIAlertView***********************************/

     @IBAction func alert() {
         var alert:UIAlertView = UIAlertView(title: "AlertView", message: "请点击", delegate: self, cancelButtonTitle: "取消", otherButtonTitles: "确定", "其他")
         alert.show()
     }

     func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {

     }

     /**************************UIActionSheet**********************************/

     @IBAction func action() {
         var action:UIActionSheet = UIActionSheet(title: "AlertView", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: "删除")
         action.showInView(self.view)
     }

     func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {

     }

     /*************************************************************/

     @IBAction func alertController1() {
         var alertController:UIAlertController = UIAlertController()

         var alacition:UIAlertAction = UIAlertAction(title: "ios", style: UIAlertActionStyle.Default, handler: nil)
         alertController.addAction(alacition)

         alertController.title = "asdgasdfg"
         alertController.message = "asdgdfsg"

         self.presentViewController(alertController, animated: true, completion: nil)

     }

     @IBAction func alertController() {
         var alertController:UIAlertController = UIAlertController(title: "laksdhfkj", message: "aslkdhfksd", preferredStyle: UIAlertControllerStyle.Alert)
         self.presentViewController(alertController, animated: true, completion: nil)
     }

注:如果你想使用更傻逼的方法也是可以的,比如使用一个控件,再用动画来控制它的出现可隐藏,不过一看就更大神差太远。。。。哈哈哈哈

iOS开发——UI篇&提示效果的更多相关文章

  1. iOS开发UI篇—CAlayer(自定义layer)

    iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的Draw ...

  2. iOS开发UI篇—核心动画(UIView封装动画)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  3. iOS开发UI篇—核心动画(基础动画)

    转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...

  4. iOS开发UI篇—Modal简单介绍

    iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...

  5. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  6. iOS开发UI篇—简单的浏览器查看程序

    iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...

  7. iOS开发UI篇—字典转模型

    iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 // // LFViewController.m // 03-应用管理 // // Creat ...

  8. iOS开发UI篇—Kvc简单介绍

    ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...

  9. iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明

    ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...

随机推荐

  1. asp.net SqlParameter关于Like的传参数无效问题

    按常规的思路,我们会这样写 复制代码代码如下: String searchName ="Sam"; String strSql = "select * FROM Tabl ...

  2. Query Profiler 和Explain 用法详解

    一.Query Profiler  MySQL 的Query Profiler 是一个使用非常方便的Query 诊断分析工具,通过该工具可以获取一条Query 在整个执行过程中多种资源的消耗情况,如C ...

  3. vs2010调用matlab2011下的.m文件

    很幸运在网上找到了采用引擎的方法,用vs2009调用matlab2008下的.m文件:但个人的环境是vs2010+matlab2011;想着二者差不多,故将s2010调用matlab2008拿来试试: ...

  4. DELPHI 中的Delay函数,利用GetTickCount和Application.ProcessMessages构建

      作者 关劲松           delphi 开发中有些时候需要停留片刻,等待界面输入,或异步操作完成,如果使用sleep函数的话,整个程序都会停顿,界面还会出现冻结的情况.因此需要自行编写一个 ...

  5. MyEclipse2014安装ADT插件(适用于其他版本)

    这次,本文采用公认的最佳插件安装方式——link方式来安装ADT插件,此方法适用于Eclipse以及MyEclipse其他版本.下面为大家一一道来: 大致过程如下: 官方的在线安装很麻烦,找了很久,终 ...

  6. codeforces 671C Ultimate Weirdness of an Array 线段树+构造

    题解上说的很清楚了,我照着写的,表示膜拜题解 然后时间复杂度我觉得应该是O(nlogn),虽然常数略大,预处理和倒着扫,都是O(nlogn) #include <stdio.h> #inc ...

  7. 发布代码小助手V2.1发布了——Code2HTML工具

    设计起源: 新浪博客似乎没有插入代码的功能,所以不得不用打空格的方法格式化代码.而且没法显示行号. 描述: 发布代码小助手用python和Tkinter开发,可以在任何常见操作系统上运行.主要用于在不 ...

  8. Java WebService简单使用

    一直在写java但从来没有使用webservice,在网上查了下资料写个简单的使用放这里做备份 具体步骤: 1.新建一个java工程在里面写一个类(服务端)如下: package com.webser ...

  9. Java 远程通讯技术及原理分析

    在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些 ...

  10. hdu 1877 又一版 A+B

    又一版 A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...