Giter Club home page Giter Club logo

tyalertcontroller's Introduction

TYAlertController

Powerful, Easy to use alertView or popupView on controller and window, support blur effect, custom view and custom animation, use aotolayout.support iphone, ipad .

CocoaPods

pod 'TYAlertController'

ScreenShot

image

Requirements

  • Xcode 5 or higher
  • iOS 7.0 or higher
  • ARC

Usage

1.copy TYAlertController Folder to your project, if you want to have blur effect ,you need copy Blur Effects Folder to your project.
2. #import "UIView+TYAlertView.h", when you use it, if you want use blur effect, #import "TYAlertController+BlurEffects.h".
3. you can use TYAlertController show in controller, or use TYShowAlertView show in window, or use Category UIView+TYAlertView convenient show alertview.
4. check Demo,it have more usefull usage and example.

usege demo

  • alertView lifecycle block
// alertView lifecycle block
@property (copy, nonatomic) void (^viewWillShowHandler)(UIView *alertView);
@property (copy, nonatomic) void (^viewDidShowHandler)(UIView *alertView);
@property (copy, nonatomic) void (^viewWillHideHandler)(UIView *alertView);
@property (copy, nonatomic) void (^viewDidHideHandler)(UIView *alertView);

// dismiss controller completed block
@property (nonatomic, copy) void (^dismissComplete)(void);
  • show in controller (tow way)(recommend)
TYAlertView *alertView = [TYAlertView alertViewWithTitle:@"TYAlertView" message:@"This is a message, the alert view containt text and textfiled. "];
    
    [alertView addAction:[TYAlertAction actionWithTitle:@"取消" style:TYAlertActionStyleCancle handler:^(TYAlertAction *action) {
        NSLog(@"%@",action.title);
    }]];

    [alertView addAction:[TYAlertAction actionWithTitle:@"确定" style:TYAlertActionStyleDestructive handler:^(TYAlertAction *action) {
        NSLog(@"%@",action.title);
    }]];
    
    [alertView addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"请输入账号";
    }];
    [alertView addTextFieldWithConfigurationHandler:^(UITextField *textField) {
        textField.placeholder = @"请输入密码";
    }];
    
    // first way to show
    TYAlertController *alertController = [TYAlertController alertControllerWithAlertView:alertView preferredStyle:TYAlertControllerStyleAlert];
    //alertController.alertViewOriginY = 60;
    [self presentViewController:alertController animated:YES completion:nil];
    
    // second way to show,use UIView Category
    //[alertView showInController:self preferredStyle:TYAlertControllerStyleAlert];
  • show in window (tow way)
TYAlertView *alertView = [TYAlertView alertViewWithTitle:@"TYAlertView" message:@"A message should be a short, but it can support long message"];
    
    [alertView addAction:[TYAlertAction actionWithTitle:@"取消" style:TYAlertActionStyleCancle handler:^(TYAlertAction *action) {
        NSLog(@"%@",action.title);
    }]];
    
    [alertView addAction:[TYAlertAction actionWithTitle:@"确定" style:TYAlertActionStyleDestructive handler:^(TYAlertAction *action) {
        NSLog(@"%@",action.title);
    }]];
    
    // first way to show ,use UIView Category
    [alertView showInWindowWithOriginY:200 backgoundTapDismissEnable:YES];
    
    // second way to show
   // [TYShowAlertView showAlertViewWithView:alertView originY:200 backgoundTapDismissEnable:YES];

Contact

if you find bug,please pull reqeust me

tyalertcontroller's People

Contributors

12207480 avatar raozhizhen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tyalertcontroller's Issues

怎么获取 UItextFiled的回掉数据?

Alert是非常漂亮,但是 怎么获取 回掉的数据? 点击确认 怎么获取UITextField数据? 这个 看了代码 没有获取的方式,只是展示了 响应的样式而已。。。。。。

重复弹出一个View的问题

在TYAlertScaleFadeAnimation.m文件中,
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
alertController.backgroundView.alpha = 0.0;
switch (alertController.preferredStyle) {
case TYAlertControllerStyleAlert:
alertController.alertView.alpha = 0.0;
alertController.alertView.transform = CGAffineTransformMakeScale(0.1, 0.1);
break;
case TYAlertControllerStyleActionSheet:
alertController.alertView.transform = CGAffineTransformMakeTranslation(0, CGRectGetHeight(alertController.alertView.frame));
break;
default:
break;
}
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
我发现当alertController dismissAnimateTransition的时候,alertView动画执行了缩小0.1 但动画完成了没有执行 alertController.alertView.transform = CGAffineTransformIdentity;这样重复弹出一个View就不是原始的frame,还有发现[_alertView addConstraintWidth:CGRectGetWidth(_alertView.frame) height:CGRectGetHeight(_alertView.frame)]; 重复的添加宽度和高度约束

指定横竖屏

楼主请问能添加指定横竖屏吗,现在遇到的问题是在横屏下显示弹窗,如果调整手机,弹窗就会竖屏显示,而且显示弹窗的VC也会跟着竖屏,但是这个VC只能横屏显示

高度的约束问题

传值同一个View,如果第二次给view赋值高度发生改变,弹出的view高度并未改变。感觉应该在设置约束前应该把之前的约束给移除。

blur effects 文件路径问题

blur effects 的路径为TYAlertControllerDemo/Blur Effects/**/*.{h,m},而Cocoapods的源文件路径为s.source_files = "TYAlertControllerDemo/TYAlertController/**/*.{h,m}",不包括Blur Effects文件夹,因此目录下的文件不可用。

在iPad iOS14系统上面会崩溃

  • (instancetype)createViewFromNib
    {
    return [self createViewFromNibName:NSStringFromClass(self.class)];
    }
    这个方法,NSStringFromClass返回的类名是nil 但是在iPhone的iOS14上就不会出问题

Memory leaks

Library uses wrong dispatch queues and causes calling from background thread

跟IQKeyboardManager 有冲突

如果项目中有用到IQKeyboardManager,第三方库,
再用作者的库,UITextField成为第一响应都后, UITextField可能会被键盘挡住. IQKeyboardManager没有起到作用.
pasted graphic 1
pasted graphic 2

viewDidLoad中调用不起作用

A present B,然后在B的viewDidload中调用【show alert】相关方法,会出现show alert失败的状况;延迟0.3则会show success。

当UIWindow不在第一个位置的时候,弹窗弹不出来

这个现象出现在我们的App第一次安装的时候,[UIApplication sharedApplication].windows 这个获取到的windows数组如下:
<__NSArrayM 0x6000022bf9c0>(
<UITextEffectsWindow: 0x7fe724227800; frame = (0 0; 414 896); opaque = NO; autoresize = W+H; layer = <UIWindowLayer: 0x600002c38ac0>>,
<UIWindow: 0x7fe723f453b0; frame = (0 0; 414 896); autoresize = W+H; tintColor = UIExtendedSRGBColorSpace 0.117647 0.8 0.431373 1; gestureRecognizers = <NSArray: 0x600002259a40>; layer = <UIWindowLayer: 0x600002cbf3e0>>,
<UITextEffectsWindow: 0x7fe725029a00; frame = (0 0; 414 896); layer = <UIWindowLayer: 0x600002c3e160>>,
<UIRemoteKeyboardWindow: 0x7fe725107400; frame = (0 0; 414 896); opaque = NO; autoresize = W+H; layer = <UIWindowLayer: 0x600002c3e0e0>>
)
如果取第一个的话,弹窗就弹不出来,关闭App,重新打开App又好了,所以觉得
#define kCurrentWindow [[UIApplication sharedApplication].windows firstObject]
这行代码有问题,应该要判断下取到的是否是UIWindow,windowlevel是否为normal,我们这边能改,但是代码不好管理,希望你们能在下个版本解决下这个问题,辛苦了。

内容太长的优化

有没有打算把messageLabel由UILabel改成UITextView,这样就算message再长都不用担心了,因为可以滑动,项目里message太长,导致都超出屏幕外了

showInWindowWithOriginY

[alertView showInWindowWithOriginY:200 backgoundTapDismissEnable:YES]; This way is destroyed in which viewController addsubView UITableView

关于使用xib自定义actionSheet样式modal出来的xib中用约束设置的控件位置错乱的问题

我在自定义了一个xib,xib高度165,底部有一个UIView高度44,然后上面有5个UIView等宽等高,然后我使用下面的代码将其弹出:

JNShopDetailAlertView *settingModelView = [JNShopDetailAlertView createShopDetailAlertView];
settingModelView.frame = CGRectMake(0,0,JNScreen,165);
TYAlertController *alertController = [TYAlertController alertControllerWithAlertView:settingModelView preferredStyle:TYAlertControllerStyleActionSheet];
        alertController.backgoundTapDismissEnable = NO;
        settingModelView.clickCancelBlock = ^{
            [alertController dismissViewControllerAnimated:YES];
        };
        [self presentViewController:alertController animated:YES completion:nil];

但是,发现xib中的平均分的5个UIView的位置完全不对,而后我自己写了一个弹出动画加载同一个xib效果是对的,请问一下,如果自定义的xib中的涉及到均分很多的view为啥model出来之后里面的位置完全不对呢,但是我发现如果xib中的样式比较简单,那么modal出来的位置就是对的,请问作者这是为啥呢?

TYShowAlertView 文件中.m 文件有错

#define kCurrentWindow [[UIApplication sharedApplication].windows firstObject]
看你是这样取的当前currentWindow
可,在我层级比较复杂的时候,这样做就出问题,取的currenWindow就不是我当前的window
我自己写了个分类,重写了show方法
把currentWindow改成如下
[UIApplication sharedApplication].keyWindow
bug解决.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.