IOS自定义弹出提示框

采用代理的设计思想。

1,创建一个视图类.h

#import <UIKit/UIKit.h>

@protocol CustomaltviewDelegate;

@protocol CustomaltviewDelegate <NSObject>
- (void)alertview:(id)altview clickbuttonIndex:(NSInteger)index;
@end

@interface Customaltview : UIView<CustomaltviewDelegate>

@property(nonatomic,strong)UIView *view;
@property(nonatomic,assign)float altHeight;
@property(nonatomic,assign)float altwidth;
@property(nonatomic,weak)id<CustomaltviewDelegate>delegate;

- (void)creatAltWithAltTile:(NSString*)title content:(NSString*)content;
- (void)show;
- (void)hide;

@end

2,实现自定义的的视图.m

#import "Customaltview.h"

@implementation Customaltview

- (void)creatAltWithAltTile:(NSString *)title content:(NSString *)content{
    _view = [[UIView alloc] init];
    UILabel *altTitleLabel = [[UILabel alloc] init];
    altTitleLabel.text = title;
    [altTitleLabel setTextAlignment:NSTextAlignmentCenter];
    [altTitleLabel setFont:[UIFont systemFontOfSize:16]];
    [altTitleLabel setTextColor:[UIColor redColor]];
    [altTitleLabel setFrame:CGRectMake(0, 0, _altwidth, 30)];
    [_view addSubview:altTitleLabel];

    UILabel *altContent = [[UILabel alloc] init];
    [altContent setText:content];
    [altContent setFont:[UIFont systemFontOfSize:12.0f]];
    [altContent setTextAlignment:NSTextAlignmentLeft];
    [altContent setTextColor:[UIColor colorWithRed:0.3f green:0.3f blue:0.3f alpha:1.0]];
    [altContent setLineBreakMode:NSLineBreakByCharWrapping];
    CGSize size = [altContent.text sizeWithFont:[UIFont systemFontOfSize:12.0f] constrainedToSize:CGSizeMake(_altwidth-20, 700.0f) lineBreakMode:NSLineBreakByCharWrapping];
    [altContent setFrame:CGRectMake(10, 30, _altwidth-20, (int)size.height+5)];
    altContent.numberOfLines = (int)size.height/20+1;
    _altHeight = 35+altContent.frame.size.height;
    [_view addSubview:altContent];

        UIButton *altbtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [altbtn setTitle:@"取消" forState:UIControlStateNormal];
        [altbtn setBackgroundColor:[UIColor grayColor]];
        [altbtn setTag:0];
        [altbtn setFrame:CGRectMake((_altwidth/2-50)/2, _altHeight, 50, 35)];
        [altbtn addTarget:self action:@selector(checkbtn:) forControlEvents:UIControlEventTouchUpInside];

        UIButton *altbut1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
        [altbut1 setTitle:@"确认" forState:UIControlStateNormal];
        [altbut1 setBackgroundColor:[UIColor grayColor]];
        [altbut1 setTag:1];
        [altbut1 setFrame:CGRectMake(_altwidth/2+(_altwidth/2-50)/2, _altHeight, 50, 35)];
        [altbut1 addTarget:self action:@selector(checkbtn:) forControlEvents:UIControlEventTouchUpInside];

        [_view addSubview:altbtn];
        [_view addSubview:altbut1];
        _altHeight+=50;

    [_view setFrame:CGRectMake((320-_altwidth)/2, ([UIScreen mainScreen].bounds.size.height-_altHeight)/2-64, _altwidth , _altHeight)];
    [_view setBackgroundColor:[UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:1.0]];
}

#pragma Delegate
-(void)alertview:(id)altview clickbuttonIndex:(NSInteger)index
{
    [_delegate alertview:self clickbuttonIndex:index];
}
#pragma SELECTOR
-(void)handleSingleTap:(UITapGestureRecognizer *)sender
{
    [self hide];
}
-(void)checkbtn:(UIButton *)sender
{
    [_delegate alertview:self clickbuttonIndex:sender.tag];
}
#pragma Instance method
-(void)show
{
    if(_view==nil)
    {
        _view=[[UIView alloc] init];
    }
    [_view setHidden:NO];
}
-(void)hide
{
    if(_view==nil)
    {
        _view=[[UIView alloc] init];
    }
    [_view setHidden:YES];
}

@end

3,引用这个类,需要引用类进来,遵守协议,执行协议方法

#import "ViewController.h"
#import "Customaltview.h"
#import "BViewController.h"
#import "CViewController.h"

@interface ViewController ()<CustomaltviewDelegate>
@property(nonatomic,strong)Customaltview *alt;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
        _alt=[[Customaltview alloc]init];
        _alt.delegate=self;
        _alt.altwidth=250.0f;

        [_alt creatAltWithAltTile:@"警告" content:@"我是一个警告框,快来看!!!"];

        [self.view addSubview:_alt.view];
        [_alt show];
}

-(void)alertview:(id)altview clickbuttonIndex:(NSInteger)index
{
    if (index == 0) {
        [self presentViewController:[BViewController new] animated:YES completion:^{
    }];
        NSLog(@"cancel");
    }else{
        [self presentViewController:[CViewController new] animated:YES completion:^{
        }];
        NSLog(@"yes");
    }
    [_alt hide];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
时间: 2024-10-18 21:56:46

IOS自定义弹出提示框的相关文章

之前项目中用到的简单的自定义弹出提示框的实现,整理整理,当然开源的插件很多,但自己写的可以随意发挥

效果如下: html代码: <div class="container"> <div class="wrapper" style="background-color:white; position:relative;"> <div class="box" style="background-color:red; position:absolute; left:100px; top:300

鼠标悬浮在超链接上弹出提示框

鼠标悬浮在超链接上弹出提示框:大家知道超链接有一个title属性,当鼠标放在链接的时候,可以出现一个提示框效果,不过自带的效果虽然廉价但往往并不物美,所以需要自定义一个,下面是一个纯CSS实现的这样的效果,和大家分享一下.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="h

android中常用的弹出提示框

转自:http://blog.csdn.net/centralperk/article/details/7493731 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有

Android 底部弹出提示框的解决办法(使用Activity以及PopupWindow)

本片文章主要谈探讨了如何实现在底部弹出提示框背景为半透明效果的实现.想要实现此种效果一般有两种方式一个是使用Activity设置Theme另一种方式就是使用PopupWindow设置样式实现效果. 一,使用Activity 首先是此activity的布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.andro

jQuery - 选中复选框则弹出提示框

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>判断是否选中</title> <script type="text/javascript" src="./js/jquery-1.8.3.min.js"></script> <script

如何实现android蓝牙开发 自动配对连接,并不弹出提示框

如何实现android蓝牙开发 自动配对连接,并不弹出提示框 之前做一个android版的蓝牙,遇到最大的难题就是自动配对. 上网查资料说是用反射createBond()和setPin(),但测试时进行配对还是会出现提示,但配对是成功了 我就开始查找怎么关闭这个蓝牙配对提示框,后面还是伟大的android源码帮助了我. 在源码 BluetoothDevice 类中还有两个隐藏方法 cancelBondProcess()和cancelPairingUserInput() 这两个方法一个是取消配对进

asp.net 后台代码跳转页面前弹出提示框

1.Response.Write("<script>alert('查询语句执行出错!');window.location.href=DisplayData.aspx</script>"); 2.Page.RegisterStartupScript("msg", "<script>alert('查询语句执行出错!');window.location.href='DisplayData.aspx'</script>

基于Jquery 简单实用的弹出提示框

引言: 原生的 alert 样子看起来很粗暴,网上也有一大堆相关的插件,但是基本上都是大而全,仅仅几句话可以实现的东西,可能要引入好几十k的文件,所以话了点时间自己写了个弹出效果,放到项目上去发现效果还不错,这里贴出来,做个备忘,有需要的同学可以拿去,也可以作为一个参考. 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.d

经验总结:WebBrowser自动点击弹出提示框alert、弹出对话框confirm、屏蔽弹出框、屏蔽弹出脚本错误的解决办法

经验总结:WebBrowser自动点击弹出提示框alert.弹出对话框confirm.屏蔽弹出框.屏蔽弹出脚本错误的解决办法 网上有好多解决方法,可是不一定好使,本人经过多次试验,针对WebBrowser控件中自动点击弹出框及禁用脚本提示问题得到如下几种实际情况的解决办法,绝对管用. 1.屏蔽弹出错误脚本 将WebBrowser控件ScriptErrorsSuppressed设置为True即可. (参考本篇博客:http://www.cnblogs.com/qqflying/archive/20