iOS开发——UI篇&提示效果
提示效果
关于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篇&提示效果的更多相关文章
- iOS开发UI篇—CAlayer(自定义layer)
iOS开发UI篇—CAlayer(自定义layer) 一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的Draw ...
- iOS开发UI篇—核心动画(UIView封装动画)
iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- iOS开发UI篇—Modal简单介绍
iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...
- iOS开发UI篇—transframe属性(形变)
iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...
- iOS开发UI篇—简单的浏览器查看程序
iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...
- iOS开发UI篇—字典转模型
iOS开发UI篇—字典转模型 一.能完成功能的“问题代码” 1.从plist中加载的数据 2.实现的代码 // // LFViewController.m // 03-应用管理 // // Creat ...
- iOS开发UI篇—Kvc简单介绍
ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...
- iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明
ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...
随机推荐
- asp.net SqlParameter关于Like的传参数无效问题
按常规的思路,我们会这样写 复制代码代码如下: String searchName ="Sam"; String strSql = "select * FROM Tabl ...
- Query Profiler 和Explain 用法详解
一.Query Profiler MySQL 的Query Profiler 是一个使用非常方便的Query 诊断分析工具,通过该工具可以获取一条Query 在整个执行过程中多种资源的消耗情况,如C ...
- vs2010调用matlab2011下的.m文件
很幸运在网上找到了采用引擎的方法,用vs2009调用matlab2008下的.m文件:但个人的环境是vs2010+matlab2011;想着二者差不多,故将s2010调用matlab2008拿来试试: ...
- DELPHI 中的Delay函数,利用GetTickCount和Application.ProcessMessages构建
作者 关劲松 delphi 开发中有些时候需要停留片刻,等待界面输入,或异步操作完成,如果使用sleep函数的话,整个程序都会停顿,界面还会出现冻结的情况.因此需要自行编写一个 ...
- MyEclipse2014安装ADT插件(适用于其他版本)
这次,本文采用公认的最佳插件安装方式——link方式来安装ADT插件,此方法适用于Eclipse以及MyEclipse其他版本.下面为大家一一道来: 大致过程如下: 官方的在线安装很麻烦,找了很久,终 ...
- codeforces 671C Ultimate Weirdness of an Array 线段树+构造
题解上说的很清楚了,我照着写的,表示膜拜题解 然后时间复杂度我觉得应该是O(nlogn),虽然常数略大,预处理和倒着扫,都是O(nlogn) #include <stdio.h> #inc ...
- 发布代码小助手V2.1发布了——Code2HTML工具
设计起源: 新浪博客似乎没有插入代码的功能,所以不得不用打空格的方法格式化代码.而且没法显示行号. 描述: 发布代码小助手用python和Tkinter开发,可以在任何常见操作系统上运行.主要用于在不 ...
- Java WebService简单使用
一直在写java但从来没有使用webservice,在网上查了下资料写个简单的使用放这里做备份 具体步骤: 1.新建一个java工程在里面写一个类(服务端)如下: package com.webser ...
- Java 远程通讯技术及原理分析
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些 ...
- hdu 1877 又一版 A+B
又一版 A+B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...