IOS-封装弹出框

1.封装弹出框,包括设置弹出界面 设置弹出地点 弹出 消失等方法。大概封装如下

#import <UIKit/UIKit.h>

@interface WBDropdownMenu : UIView

@property (nonatomic,strong) UIView *contentView;

@property (nonatomic,strong) UIViewController *cntController;

+(instancetype)menu;

-(void)showFrom:(UIView *)view;

-(void)dismiss;

@end

2.其实现如下:

#import "WBDropdownMenu.h"
@interface WBDropdownMenu()

@property (nonatomic ,weak) UIImageView *containerView;

@end

@implementation WBDropdownMenu

-(UIImageView *)containerView
{
    if (!_containerView) {
        UIImageView *iv=[[UIImageView alloc] init];
        iv.image=[UIImage imageNamed:@"popover_background"];
        iv.width=217;
        [self addSubview:iv];
        _containerView=iv;
    }
    return _containerView;
}
#pragme 初始化透明背景界面 和弹出框背景
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.frame=[UIScreen mainScreen].bounds;
        self.backgroundColor=[UIColor clearColor];

        [self containerView].userInteractionEnabled=YES;
    }
    return self;
}

+(instancetype)menu
{
    return [[WBDropdownMenu alloc] init];
}
#pragme 设置弹出框内容
-(void)setContentView:(UIView *)contentView
{
    contentView.x=10;
    contentView.y=15;

    contentView.width=self.containerView.width-2 * contentView.x;
    self.containerView.height=CGRectGetMaxY(contentView.bounds)+25;

    [self.containerView addSubview:contentView];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self dismiss];
}
#pragme 扩展内容view的另一种形式viewController
-(void)setCntController:(UIViewController *)cntController
{
    _cntController=cntController;
    [self setContentView:_cntController.view];
}
#pragme 设置显示位置 该位置为windiow的绝对位置
-(void)showFrom:(UIView *)view
{
   UIWindow *window= [[UIApplication sharedApplication].windows lastObject];
    [window addSubview:self];
    CGRect absRect=[view convertRect:view.bounds toView:self];
    self.containerView.y=CGRectGetMaxY(absRect);
    self.containerView.midX=CGRectGetMidX(absRect);

}

-(void)dismiss
{
    [self removeFromSuperview];
}

@end

3.调用如下:

self.menu=[WBDropdownMenu menu];

    WBDropdownViewController *tableViewController=[[WBDropdownViewController alloc] init];
    tableViewController.tableView.height=44*3;

    [self.menu setCntController:tableViewController];

    [self.menu showFrom:target];

(大部分弹出框显示为当前最前的window的内容,ios8中开始默认提供一个键盘window)

时间: 2024-10-31 04:47:07

IOS-封装弹出框的相关文章

angukar 指令封装弹出框效果

就直接用bs的警告框啦~,Duang~ 功能 可以设置message和type,type就是bs内置的几种颜色 默认提示3秒框自动关闭,或者点击x号关闭 代码 模板 <div class="alert alert-{{type || 'info'}}" ng-show="message"> <button type="button" class="close" ng-click="hideAlert

JQuery+CSS3实现封装弹出登录框效果

原文:JQuery+CSS3实现封装弹出登录框效果 上次发了一篇使用Javascript来实现弹出层的效果,这次刚好用了JQuery来实现,所以顺便记录一下: 因为这次使用了Bootstrap来做一个项目,但是由于不使用Bootstrap自带的JS插件,所以这个弹出登录框就自己实现封装来调用,做出来的效果其实和Bootstrap自带的效果差不多.OK,看一下效果图: 其实很简单,首先是html结构: <div id="mask"></div> <!-- 半

IOS UIAlertController 弹出框中添加视图(例如日期选择器等等)

UIDatePicker *datePicker = [[UIDatePicker alloc] init]; datePicker.datePickerMode = UIDatePickerModeDate; UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"\n\n\n\n\n\n\n\n\n\n\n\n" message:nil  preferredStyle:UIAlertContr

iOS开发- 自动消失的弹出框

- (void)timerFireMethod:(NSTimer*)theTimer//弹出框 { UIAlertView *promptAlert = (UIAlertView*)[theTimer userInfo]; [promptAlert dismissWithClickedButtonIndex:0 animated:NO]; promptAlert =NULL; } - (void)showAlert:(NSString *) _message{//时间 UIAlertView *

ios 一步一步学会自定义地图吹出框(CalloutView)--&gt;(百度地图,高德地图,google地图)

前言 在 ios上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的 google地图,只提供了这四个属性,如果想添加更多的view,只能自定义.可是,类库只能看到.h文件,.m都看不到,这让新手比较蛋疼,庞大的地 图类库一时半会摸不着头脑,从头再学还需要时间,本文就教大家快速制作一个属于自己的 CalloutView!等你一步一步调通后,再回过头来使用系统自带的方法设置callout,就会领悟这个过程. 正文

微信公众号弹出框在IOS最新系统中点击键盘上的“完成”导致事件无法触发问题

微信公众号弹出框在IOS最新系统中点击键盘上的"完成"导致事件无法触发问题 问题描述 微信公众号中有项功能是弹框模态框,输入信息后保存操作.但是在IOS系统中发现,当输入内容后,点击键盘上的"完成"后,再点击"提交"无反应:跳过"完成"直接点击"提交"就可以正常保存 问题原因 当键盘弹出后,会将body向上弹起:但是点击"完成"后并没有将body拉回,导致点击事件不在body内而无法触发

[RN] React Native 封装选择弹出框(ios&amp;android)

之前看到react-native-image-picker中自带了一个选择器,可以选择拍照还是图库,但我们的项目中有多处用到这个选择弹出框,所以就自己写了一下,最最重要的是ios和Android通用.先上动态效果图~ 参考: https://www.jianshu.com/p/42b4390e860e https://www.jianshu.com/p/71c4d047b2f8 原文地址:https://www.cnblogs.com/wukong1688/p/10960917.html

iOS最好用的弹出框

重构项目时发现有的时候需要弹出提示,比如登录成功,数据请求失败,还有选择相机或者相册来上传头像等等. 今天就自己写了一个弹出框,采用的是系统的UIAlertController,只不过自己有定义了一些事件点击的方法,使用时可以直接输入提示的内容还有提供的选项以及点击选项时的事件. 使用方法: 先导头文件:#import "YZ.h" 或者 #import "YZ_Alert.h"都一样 然后: //只有一种选项按钮带提示的内容 [[YZ_Alert YZ] oneM

iOS开发- 自己主动消失的弹出框

- (void)timerFireMethod:(NSTimer*)theTimer//弹出框 { UIAlertView *promptAlert = (UIAlertView*)[theTimer userInfo]; [promptAlert dismissWithClickedButtonIndex:0 animated:NO]; promptAlert =NULL; } - (void)showAlert:(NSString *) _message{//时间 UIAlertView *