diff --git a/.DS_Store b/.DS_Store index 4acb2ae..d61b947 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/EBBannerView/.DS_Store b/EBBannerView/.DS_Store index 8d09ed4..fc655eb 100644 Binary files a/EBBannerView/.DS_Store and b/EBBannerView/.DS_Store differ diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView.xib b/EBBannerView/Classes/EBBannerView.xib similarity index 78% rename from demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView.xib rename to EBBannerView/Classes/EBBannerView.xib index b508981..499a063 100644 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView.xib +++ b/EBBannerView/Classes/EBBannerView.xib @@ -1,10 +1,8 @@ - - - - + + - + @@ -100,11 +98,11 @@ - + - + @@ -220,7 +218,7 @@ - + @@ -348,7 +346,7 @@ - + @@ -468,5 +466,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EBBannerView/Classes/EBSystemBannerView.xib b/EBBannerView/Classes/EBSystemBannerView.xib index 4e6492f..c3486f3 100644 --- a/EBBannerView/Classes/EBSystemBannerView.xib +++ b/EBBannerView/Classes/EBSystemBannerView.xib @@ -1,9 +1,8 @@ - + - - + diff --git a/SwiftDemo/SwiftDemo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftDemo/SwiftDemo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate index f7afa13..5c0f48f 100644 Binary files a/SwiftDemo/SwiftDemo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate and b/SwiftDemo/SwiftDemo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/demo/.DS_Store b/demo/.DS_Store index 8fb002a..35a73b5 100644 Binary files a/demo/.DS_Store and b/demo/.DS_Store differ diff --git a/demo/Podfile.lock b/demo/Podfile.lock index 1df29bb..b7aa8bd 100644 --- a/demo/Podfile.lock +++ b/demo/Podfile.lock @@ -13,4 +13,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 90f7b9d231aa1e228ab4f7e64027378e898d42e8 -COCOAPODS: 1.7.5 +COCOAPODS: 1.9.1 diff --git a/demo/Pods/.DS_Store b/demo/Pods/.DS_Store deleted file mode 100644 index 10b0ed0..0000000 Binary files a/demo/Pods/.DS_Store and /dev/null differ diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView+Categories.h b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView+Categories.h deleted file mode 100644 index 8158f5b..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView+Categories.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// EBBannerView+Categories.h -// demo -// -// Created by pikacode@qq.com on 2017/10/20. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import "EBBannerView.h" - -#define WEAK_SELF(weakSelf) __weak __typeof(&*self)weakSelf = self; -#define ScreenWidth [UIScreen mainScreen].bounds.size.width -#define ScreenHeight [UIScreen mainScreen].bounds.size.height - -@interface EBBannerView (EBCategory) - -+(UIImage*)defaultIcon; -+(NSString*)defaultTitle; -+(NSString*)defaultDate; -+(NSTimeInterval)defaultAnimationTime; -+(NSTimeInterval)defaultStayTime; -+(UInt32)defaultSoundID; - -@end - -@interface NSTimer (EBCategory) - -+ (NSTimer *)eb_scheduledTimerWithTimeInterval:(NSTimeInterval)interval block:(void (^)(NSTimer *timer))block repeats:(BOOL)repeats; - -@end - -@interface UIImage (EBBannerViewCategory) - -+(UIColor *)colorAtPoint:(CGPoint)point; - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView+Categories.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView+Categories.m deleted file mode 100644 index 323acb3..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView+Categories.m +++ /dev/null @@ -1,99 +0,0 @@ -// -// EBBannerView+Categories.m -// demo -// -// Created by pikacode@qq.com on 2017/10/20. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import "EBBannerView+Categories.h" -#import "EBBannerView.h" - -@implementation EBBannerView (EBCategory) - -+(UIImage*)defaultIcon{ - return [UIImage imageNamed:@"AppIcon40x40"] ?: [UIImage imageNamed:@"AppIcon60x60"] ?: [UIImage imageNamed:@"AppIcon80x80"]; -} - -+(NSString*)defaultTitle{ - NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; - return [infoDictionary objectForKey:@"CFBundleDisplayName"] ?: [infoDictionary objectForKey:@"CFBundleName"]; -} - -+(NSString*)defaultDate{ - return NSLocalizedString(@"现在", nil); -} - -+(NSTimeInterval)defaultAnimationTime{ - return 0.3; -} - - -+(NSTimeInterval)defaultStayTime{ - return 4; -} - -+(UInt32)defaultSoundID{ - return 1312; -} - --(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ - if (CGRectContainsPoint(self.frame, point)) { - return self; - }else{ - return [super hitTest:point withEvent:event]; - } -} - -@end - -@implementation NSTimer (EBCategory) - -+ (void)_eb_ExecBlock:(NSTimer *)timer { - if ([timer userInfo]) { - void (^block)(NSTimer *timer) = (void (^)(NSTimer *timer))[timer userInfo]; - block(timer); - } -} -+ (NSTimer *)eb_scheduledTimerWithTimeInterval:(NSTimeInterval)interval block:(void (^)(NSTimer *timer))block repeats:(BOOL)repeats { - return [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(_eb_ExecBlock:) userInfo:[block copy] repeats:repeats]; -} - -@end - -@implementation UIImage (EBBannerViewCategory) - -+(UIColor *)colorAtPoint:(CGPoint)point{ - UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; - UIGraphicsBeginImageContext(screenWindow.frame.size);//全屏截图,包括window - [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()]; - UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); - if (!CGRectContainsPoint(CGRectMake(0.0f, 0.0f, viewImage.size.width, viewImage.size.height), point)) { - return nil; - } - NSInteger pointX = trunc(point.x); - NSInteger pointY = trunc(point.y); - CGImageRef cgImage = viewImage.CGImage; - NSUInteger width = viewImage.size.width; - NSUInteger height = viewImage.size.height; - viewImage = nil; - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - int bytesPerPixel = 4; - int bytesPerRow = bytesPerPixel * 1; - NSUInteger bitsPerComponent = 8; - unsigned char pixelData[4] = { 0, 0, 0, 0 }; - CGContextRef context = CGBitmapContextCreate(pixelData, 1, 1, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big); - CGColorSpaceRelease(colorSpace); - CGContextSetBlendMode(context, kCGBlendModeCopy); - CGContextTranslateCTM(context, -pointX, pointY-(CGFloat)height); - CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, (CGFloat)width, (CGFloat)height), cgImage); - UIGraphicsEndImageContext(); - CGContextRelease(context); - CGFloat red = (CGFloat)pixelData[0] / 255.0f; - CGFloat green = (CGFloat)pixelData[1] / 255.0f; - CGFloat blue = (CGFloat)pixelData[2] / 255.0f; - CGFloat alpha = (CGFloat)pixelData[3] / 255.0f; - return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; -} - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView.m deleted file mode 100644 index 47faa34..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerView.m +++ /dev/null @@ -1,267 +0,0 @@ -// -// EBBannerView.m -// iOS-Foreground-Push-Notification -// -// Created by pikacode@qq.com on 0/7/21. -// Copyright © 200年 57300022@qq.com. All rights reserved. -// - -#import "EBBannerView.h" -#import "EBMuteDetector.h" -#import -#import "EBCustomBannerView.h" -#import "EBBannerView+Categories.h" -#import "EBBannerWindow.h" - -#define kAnimationDamping 0.8 - -NSString *const EBBannerViewDidClickNotification = @"EBBannerViewDidClickNotification"; - -@interface EBBannerView(){ - NSTimer *_hideTimer; -} - -@property (weak, nonatomic) IBOutlet UIImageView *imageView; -@property (weak, nonatomic) IBOutlet UILabel *titleLabel; -@property (weak, nonatomic) IBOutlet UILabel *contentLabel; -@property (weak, nonatomic) IBOutlet UILabel *dateLabel; -@property (weak, nonatomic) IBOutlet UIView *lineView; - -@property (nonatomic, assign)BOOL isExpand; -@property(nonatomic, assign, readonly)CGFloat standardHeight; -@property (nonatomic, assign, readonly)CGFloat calculatedContentHeight; - -@property (nonatomic, assign, readonly)CGFloat fixedX; -@property (nonatomic, assign, readonly)CGFloat fixedY; -@property (nonatomic, assign, readonly)CGFloat fixedWidth; - -@property(nonatomic, strong)EBBannerViewMaker *maker; - -@end - -@implementation EBBannerView - -static NSMutableArray *sharedBannerViews; -static EBBannerWindow *sharedWindow; - -#pragma mark - public - -+(instancetype)bannerWithBlock:(void(^)(EBBannerViewMaker *make))block{ - - sharedWindow = [EBBannerWindow sharedWindow]; - - EBBannerViewMaker *maker = [EBBannerViewMaker defaultMaker]; - block(maker); - maker.style = MAX(maker.style, 9); - - EBBannerView *bannerView = [EBBannerView bannerViewWithStyle:maker.style]; - - bannerView.maker = maker; - if (maker.style == EBBannerViewStyleiOS9) { - bannerView.dateLabel.textColor = [[UIImage colorAtPoint:bannerView.dateLabel.center] colorWithAlphaComponent:0.7]; - CGPoint lineCenter = bannerView.lineView.center; - bannerView.lineView.backgroundColor = [[UIImage colorAtPoint:CGPointMake(lineCenter.x, lineCenter.y - 7)] colorWithAlphaComponent:0.5]; - } - return bannerView; -} - -+(instancetype)current{ - EBBannerView *view = sharedWindow.rootViewController.view.subviews.lastObject; - if ([view isKindOfClass:[EBBannerView class]] && view.superview) { - return view; - } else { - return nil; - } -} - --(void)show{ - if (_hideTimer) { - [_hideTimer invalidate]; - _hideTimer = nil; - } - SystemSoundID soundID = _maker.soundID; - if (_maker.soundName) { - NSURL *url = [[NSBundle mainBundle] URLForResource:_maker.soundName withExtension:nil]; - AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID); - } - WEAK_SELF(weakSelf); - [[EBMuteDetector sharedDetecotr] detectComplete:^(BOOL isMute) { - if (isMute && weakSelf.maker.vibrateOnMute) { - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); - }else{ - AudioServicesPlaySystemSound(soundID); - } - }]; - - self.imageView.image = _maker.icon; - self.titleLabel.text = _maker.title; - self.dateLabel.text = _maker.date; - self.contentLabel.text = _maker.content; - self.lineView.hidden = self.calculatedContentHeight < 34; - //iOS8 使用新样式label显示bug - if (UIDevice.currentDevice.systemVersion.intValue < 9 && _maker.style > 9) { - self.contentLabel.numberOfLines = 1; - } - - [sharedWindow.rootViewController.view addSubview:self]; - - self.frame = CGRectMake(self.fixedX, -self.standardHeight, self.fixedWidth, self.standardHeight); - - CGFloat damping = _maker.style == 9 ? 1 : kAnimationDamping; - [UIView animateWithDuration:_maker.showAnimationDuration delay:0 usingSpringWithDamping:damping initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - - weakSelf.frame = CGRectMake(weakSelf.fixedX, weakSelf.fixedY, weakSelf.fixedWidth, weakSelf.standardHeight); - } completion:^(BOOL finished) { - - EBBannerView *strongSelf = weakSelf; - strongSelf->_hideTimer = [NSTimer scheduledTimerWithTimeInterval:weakSelf.maker.stayDuration target:weakSelf selector:@selector(hide) userInfo:nil repeats:NO]; - }]; -} - -+(void)showWithContent:(NSString*)content{ - [[EBBannerView bannerWithBlock:^(EBBannerViewMaker *make) { - make.content = content; - }] show]; -} - -#pragma mark - private - -+(instancetype)bannerViewWithStyle:(EBBannerViewStyle)style{ - EBBannerView *bannerView; - for (EBBannerView *view in sharedBannerViews) { - if (view.maker.style == style) { - bannerView = view; - break; - } - } - if (bannerView == nil) { - NSArray *views = [[NSBundle bundleForClass:self.class] loadNibNamed:@"EBBannerView" owner:nil options:nil]; - NSUInteger index = MIN(style - 9, views.count - 1); - bannerView = views[index]; - [[NSNotificationCenter defaultCenter] addObserver:bannerView selector:@selector(applicationDidChangeStatusBarOrientationNotification) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; - [bannerView addGestureRecognizer]; - [sharedBannerViews addObject:bannerView]; - } - return bannerView; -} - --(void)hide{ - WEAK_SELF(weakSelf); - [UIView animateWithDuration:_maker.hideAnimationDuration delay:0 usingSpringWithDamping:kAnimationDamping initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - - weakSelf.frame = CGRectMake(weakSelf.fixedX, -weakSelf.standardHeight - (weakSelf.frame.size.height - weakSelf.standardHeight), weakSelf.fixedWidth, weakSelf.frame.size.height); - } completion:^(BOOL finished) { - - [weakSelf removeFromSuperview]; - }]; -} - --(void)applicationDidChangeStatusBarOrientationNotification{ - if (!self.superview) { - return; - } - self.frame = CGRectMake(self.fixedX, self.fixedY, self.fixedWidth, self.standardHeight); -} - --(void)addGestureRecognizer{ - UISwipeGestureRecognizer *swipeUpGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUpGesture:)]; - swipeUpGesture.direction = UISwipeGestureRecognizerDirectionUp; - [self addGestureRecognizer:swipeUpGesture]; - - UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)]; - [self addGestureRecognizer:tapGesture]; - - UISwipeGestureRecognizer *swipeDownGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDownGesture:)]; - swipeDownGesture.direction = UISwipeGestureRecognizerDirectionDown; - [self addGestureRecognizer:swipeDownGesture]; -} - --(void)tapGesture:(UITapGestureRecognizer*)tapGesture{ - if (_maker.showDetailOrHideWhenClickLongText && !self.lineView.hidden) { - UISwipeGestureRecognizer *g = [UISwipeGestureRecognizer new]; - g.direction = UISwipeGestureRecognizerDirectionDown; - [self swipeDownGesture:g]; - } else { - [[NSNotificationCenter defaultCenter] postNotificationName:EBBannerViewDidClickNotification object:_maker.object]; - [self hide]; - } -} - --(void)swipeUpGesture:(UISwipeGestureRecognizer*)gesture{ - if (gesture.direction == UISwipeGestureRecognizerDirectionUp) { - [self hide]; - } -} - --(void)swipeDownGesture:(UISwipeGestureRecognizer*)gesture{ - if (gesture.direction == UISwipeGestureRecognizerDirectionDown && !self.lineView.hidden) { - if (UIDevice.currentDevice.systemVersion.intValue < 9 && _maker.style > 9) { - self.contentLabel.numberOfLines = 0; - } - self.isExpand = YES; - self.lineView.hidden = YES; - - [_hideTimer invalidate]; - _hideTimer = nil; - _hideTimer = [NSTimer scheduledTimerWithTimeInterval:_maker.swipeDownStayDuration target:self selector:@selector(hide) userInfo:nil repeats:NO]; - - WEAK_SELF(weakSelf); - CGFloat originContentHeight = self.contentLabel.frame.size.height; - [UIView animateWithDuration:_maker.hideAnimationDuration delay:0 usingSpringWithDamping:kAnimationDamping initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - - weakSelf.frame = CGRectMake(weakSelf.fixedX, weakSelf.fixedY, weakSelf.fixedWidth, weakSelf.standardHeight + weakSelf.calculatedContentHeight - originContentHeight + 1); - } completion:^(BOOL finished) { - - weakSelf.frame = CGRectMake(weakSelf.fixedX, weakSelf.fixedY, weakSelf.fixedWidth, weakSelf.standardHeight + weakSelf.calculatedContentHeight - originContentHeight + 1); - }]; - } -} - -#pragma mark - @property - --(CGFloat)standardHeight{ - switch (_maker.style) { - case EBBannerViewStyleiOS8: - case EBBannerViewStyleiOS9: - return 70; - case EBBannerViewStyleiOS10: - case EBBannerViewStyleiOS11: - case EBBannerViewStyleiOS12: - return 90; - } -} - --(CGFloat)calculatedContentHeight{ - CGSize size = CGSizeMake(self.contentLabel.frame.size.width, MAXFLOAT); - NSDictionary *dict = [NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:self.contentLabel.font.pointSize] forKey:NSFontAttributeName]; - CGFloat calculatedHeight = [self.contentLabel.text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size.height; - return calculatedHeight; -} - --(BOOL)isiPhoneX{ - if(@available(iOS 11.0, *)) { - return UIApplication.sharedApplication.delegate.window.safeAreaInsets.bottom > 0; - } else { - return NO; - } -} - --(CGFloat)fixedX{ - return ([self isiPhoneX] && ![self isPortrait]) ? 128 : 0; -} - --(CGFloat)fixedY{ - return ([self isiPhoneX] && [self isPortrait]) ? 33 : 0; -} - --(CGFloat)fixedWidth{ - return ([self isiPhoneX] && ![self isPortrait]) ? 556 : ScreenWidth; -} - --(BOOL)isPortrait{ - return ScreenWidth < ScreenHeight; -} - -@end - - diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewController.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewController.m deleted file mode 100644 index 06bc350..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewController.m +++ /dev/null @@ -1,45 +0,0 @@ -// -// EBBannerViewController.m -// demo -// -// Created by pikacode@qq.com on 2017/10/23. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import "EBBannerViewController.h" - -@interface EBBannerViewController () - -@end - -@implementation EBBannerViewController - -- (instancetype)init -{ - self = [self initWithNibName:@"EBBannerViewController" bundle:[NSBundle bundleForClass:self.class]]; - if (self) { - - } - return self; -} - -static UIInterfaceOrientationMask supportedOrientations; - -+(void)setSupportedInterfaceOrientations:(UIInterfaceOrientationMask)orientations{ - supportedOrientations = orientations; -} - -+(void)setStatusBarHidden:(BOOL)hidden{ - statusBarHidden = hidden; -} - --(UIInterfaceOrientationMask)supportedInterfaceOrientations{ - return supportedOrientations; -} - -static BOOL statusBarHidden; --(BOOL)prefersStatusBarHidden{ - return statusBarHidden; -} - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewController.xib b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewController.xib deleted file mode 100644 index 96877a1..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewController.xib +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewMaker.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewMaker.m deleted file mode 100644 index 2df7972..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerViewMaker.m +++ /dev/null @@ -1,47 +0,0 @@ -// -// EBBannerViewMaker.m -// EBBannerView -// -// Created by wxc on 2017/11/27. -// - -#import "EBBannerView.h" - -@implementation EBBannerViewMaker - -+(instancetype)defaultMaker{ - EBBannerViewMaker *maker = [EBBannerViewMaker new]; - maker.style = MAX(UIDevice.currentDevice.systemVersion.intValue, 9); - maker.icon = [UIImage imageNamed:@"AppIcon40x40"] ?: [UIImage imageNamed:@"AppIcon60x60"] ?: [UIImage imageNamed:@"AppIcon80x80"]; - NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; - maker.title = [infoDictionary objectForKey:@"CFBundleDisplayName"] ?: [infoDictionary objectForKey:@"CFBundleName"]; - maker.date = NSLocalizedString(@"现在", nil); - maker.content = @""; - maker.showAnimationDuration = 0.3; - maker.hideAnimationDuration = 0.5; - maker.stayDuration = 4; - maker.swipeDownStayDuration = 4; - maker.soundID = 1312; - maker.vibrateOnMute = YES; - maker.showDetailOrHideWhenClickLongText = YES; - return maker; -} - --(void)setStyle:(EBBannerViewStyle)style{ - if (style < 9) { - _style = EBBannerViewStyleiOS9; - } else if (style > 12) { - _style = EBBannerViewStyleiOS12; - } else { - _style = style; - } -} - --(id)object{ - if (!_object) { - _object = self.content.copy; - } - return _object; -} - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerWindow.h b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerWindow.h deleted file mode 100644 index e8469ef..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerWindow.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// EBBannerWindow.h -// demo -// -// Created by pikacode@qq.com on 2017/10/23. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import - -@interface EBBannerWindow : UIWindow - -+(instancetype)sharedWindow; - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerWindow.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerWindow.m deleted file mode 100644 index 1dbc1a2..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBBannerWindow.m +++ /dev/null @@ -1,82 +0,0 @@ -// -// EBBannerWindow.m -// demo -// -// Created by pikacode@qq.com on 2017/10/23. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import "EBBannerWindow.h" -#import "EBBannerViewController.h" -#import "EBBannerView+Categories.h" -#import "EBEmptyWindow.h" - -@implementation EBBannerWindow - -static EBBannerWindow *sharedWindow; -static EBEmptyWindow *emptyWindow; - -+(instancetype)sharedWindow{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedWindow = [[self alloc] initWithFrame:CGRectZero]; - sharedWindow.windowLevel = UIWindowLevelAlert; - sharedWindow.layer.masksToBounds = NO; - UIWindow *originKeyWindow = UIApplication.sharedApplication.keyWindow; - [sharedWindow makeKeyAndVisible]; - - /* fix bug: - EBBannerViewController setSupportedInterfaceOrientations -> Portrait - push to a VC with orientation Left - UITextFiled's pad will show a wrong orientation with Portrait - */ - emptyWindow = [[EBEmptyWindow alloc] initWithFrame:CGRectZero]; - emptyWindow.windowLevel = UIWindowLevelAlert; - [emptyWindow makeKeyAndVisible]; - [originKeyWindow makeKeyAndVisible]; - - [EBBannerViewController setSupportedInterfaceOrientations:UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape]; - [EBBannerViewController setStatusBarHidden:NO]; - - EBBannerViewController *vc = [EBBannerViewController new]; - vc.view.backgroundColor = [UIColor clearColor]; - vc.view.frame = CGRectMake(0, 0, ScreenWidth, ScreenHeight); - sharedWindow.rootViewController = vc; - }); - return sharedWindow; -} - --(instancetype)initWithFrame:(CGRect)frame{ - self = [super initWithFrame:frame]; - if (self) { - [self addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil]; - } - return self; -} - --(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ - __block UIView *view; - [self.rootViewController.view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (CGRectContainsPoint(obj.frame, point)) { - view = obj; - } - }]; - if (view) { - CGPoint point1 = [self convertPoint:point toView:view]; - return [view hitTest:point1 withEvent:event]; - }else{ - return [super hitTest:point withEvent:event]; - } -} - --(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ - if ([keyPath isEqualToString:@"frame"] && !CGRectEqualToRect(self.frame, CGRectZero)) { - self.frame = CGRectZero; - } -} - --(void)dealloc{ - [self removeObserver:self forKeyPath:@"frame"]; -} - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBCustomBannerView.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBCustomBannerView.m deleted file mode 100644 index 46e7ed5..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBCustomBannerView.m +++ /dev/null @@ -1,240 +0,0 @@ -// -// EBCustomBannerView.m -// demo -// -// Created by pikacode@qq.com on 2017/10/20. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import "EBCustomBannerView.h" -#import "EBBannerView.h" -#import -#import "EBMuteDetector.h" -#import "EBBannerWindow.h" -#import "EBBannerView+Categories.h" - -@interface EBCustomBannerViewMaker() -@property(nonatomic, strong)UIView *view; -@end - -@implementation EBCustomBannerViewMaker -+(instancetype)makerWithView:(UIView*)view{ - EBCustomBannerViewMaker *maker = [EBCustomBannerViewMaker new]; - maker.portraitMode = EBCustomViewAppearModeTop; - maker.landscapeMode = EBCustomViewAppearModeTop; - maker.animationDuration = 0.3; - maker.stayDuration = 4.0; - maker.soundID = 0; - maker.view = view; - maker.landscapeFrame = view.frame; - maker.portraitFrame = view.frame; - maker.centerModeDurations = @[@0.3, @0.2, @0.1]; - maker.vibrateOnMute = YES; - return maker; -} -@end - -@interface EBCustomBannerView() - -@property(nonatomic, strong)EBCustomBannerViewMaker *maker; - -@end - -@implementation EBCustomBannerView - -static NSMutableArray *sharedCustomViews; -static EBBannerWindow *sharedWindow; - -+(void)sharedCustomBannerViewInit{ - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedWindow = [EBBannerWindow sharedWindow]; - sharedCustomViews = [NSMutableArray array]; - }); -} - -+(EBCustomBannerView*)showCustomView:(UIView*)view block:(void(^)(EBCustomBannerViewMaker *make))block{ - EBCustomBannerView *bannerView = [EBCustomBannerView customView:view block:block]; - [bannerView show]; - return bannerView; -} - -//make a custom view and show later -+(EBCustomBannerView*)customView:(UIView*)view block:(void(^)(EBCustomBannerViewMaker *make))block{ - EBCustomBannerView *bannerView = [EBCustomBannerView new]; - EBCustomBannerViewMaker *maker = [EBCustomBannerViewMaker makerWithView:view]; - bannerView.maker = maker; - block(maker); - [[NSNotificationCenter defaultCenter] addObserver:bannerView selector:@selector(applicationDidChangeStatusBarOrientationNotification) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; - return bannerView; -} - --(void)applicationDidChangeStatusBarOrientationNotification{ - if (sharedCustomViews.count == 0) { - return; - } - if ([self currentIsLandscape]) { - [sharedCustomViews enumerateObjectsUsingBlock:^(EBCustomBannerView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - obj.maker.view.frame = obj.maker.landscapeFrame; - }]; - }else{ - [sharedCustomViews enumerateObjectsUsingBlock:^(EBCustomBannerView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - obj.maker.view.frame = obj.maker.portraitFrame; - }]; - } -} - --(void)show{ - - [EBCustomBannerView sharedCustomBannerViewInit]; - - [sharedCustomViews addObject:self]; - - if (_maker.soundName || _maker.soundID != 0) { - SystemSoundID soundID; - if (_maker.soundName) { - NSURL *url = [[NSBundle mainBundle] URLForResource:_maker.soundName withExtension:nil]; - AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID); - }else{ - soundID = _maker.soundID; - } - WEAK_SELF(weakSelf); - [[EBMuteDetector sharedDetecotr] detectComplete:^(BOOL isMute) { - if (isMute && weakSelf.maker.vibrateOnMute) { - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); - }else{ - AudioServicesPlaySystemSound(soundID); - } - }]; - } - - [sharedWindow.rootViewController.view addSubview:_maker.view]; - - - if ([self currentAppearMode] == EBCustomViewAppearModeCenter) { - dispatch_async(dispatch_get_main_queue(), ^{ - WEAK_SELF(weakSelf); - UIView *view = weakSelf.maker.view; - view.frame = [weakSelf showFrame]; - view.alpha = 0; - [UIView animateWithDuration:weakSelf.maker.centerModeDurations[0].doubleValue animations:^{ - view.alpha = 1; - }]; - view.alpha = 0; - - view.layer.shouldRasterize = YES; - view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.4, 0.4); - [UIView animateWithDuration:weakSelf.maker.centerModeDurations[1].doubleValue animations:^{ - view.alpha = 1; - view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1); - } completion:^(BOOL finished) { - [UIView animateWithDuration:weakSelf.maker.centerModeDurations[2].doubleValue delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ - view.alpha = 1; - view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1); - } completion:^(BOOL finished2) { - view.layer.shouldRasterize = NO; - if (weakSelf.maker.stayDuration > 0) { - [NSTimer eb_scheduledTimerWithTimeInterval:weakSelf.maker.stayDuration block:^(NSTimer *timer) { - [weakSelf hide]; - } repeats:NO]; - } - }]; - }]; - }); - } else { - _maker.view.frame = [self hideFrame]; - WEAK_SELF(weakSelf); - [UIView animateWithDuration:_maker.animationDuration animations:^{ - weakSelf.maker.view.frame = [weakSelf showFrame]; - } completion:^(BOOL finished) { - if (weakSelf.maker.stayDuration > 0) { - [NSTimer eb_scheduledTimerWithTimeInterval:weakSelf.maker.stayDuration block:^(NSTimer *timer) { - [weakSelf hide]; - } repeats:NO]; - } - }]; - } -} - --(void)hide{ - if (!self.maker.view.superview) { - return; - } - if ([self currentAppearMode] == EBCustomViewAppearModeCenter) { - - dispatch_async(dispatch_get_main_queue(), ^{ - WEAK_SELF(weakSelf); - UIView *view = weakSelf.maker.view; - [UIView animateWithDuration:weakSelf.maker.centerModeDurations[0].doubleValue animations:^{ - view.alpha = 0; - }]; - - view.layer.shouldRasterize = YES; - [UIView animateWithDuration:weakSelf.maker.centerModeDurations[2].doubleValue animations:^{ - view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1); - } completion:^(BOOL finished){ - [UIView animateWithDuration:weakSelf.maker.centerModeDurations[1].doubleValue delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ - view.alpha = 0; - view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.4, 0.4); - } completion:^(BOOL finished){ - [view removeFromSuperview]; - [sharedCustomViews removeObject:weakSelf]; - }]; - }]; - }); - - } else { - WEAK_SELF(weakSelf); - [UIView animateWithDuration:_maker.animationDuration animations:^{ - weakSelf.maker.view.frame = [weakSelf hideFrame]; - } completion:^(BOOL finished) { - if (weakSelf.maker.view.superview) { - [weakSelf.maker.view removeFromSuperview]; - } - if ([sharedCustomViews containsObject:weakSelf]) { - [sharedCustomViews removeObject:weakSelf]; - } - }]; - } -} - --(BOOL)currentIsLandscape{ - return UIDeviceOrientationIsLandscape(UIDevice.currentDevice.orientation); -} - --(CGRect)showFrame{ - return [self currentIsLandscape] ? _maker.landscapeFrame : _maker.portraitFrame; -} - --(CGRect)hideFrame{ - CGRect hideFrame = [self showFrame]; - switch ([self currentAppearMode]) { - case EBCustomViewAppearModeTop: - hideFrame.origin.y = -hideFrame.size.height; - break; - case EBCustomViewAppearModeLeft: - hideFrame.origin.x = -hideFrame.size.width; - break; - case EBCustomViewAppearModeRight: - hideFrame.origin.x = ScreenWidth + hideFrame.size.width; - break; - case EBCustomViewAppearModeBottom: - hideFrame.origin.y = ScreenHeight; - break; - case EBCustomViewAppearModeCenter: - break; - default: - break; - } - return hideFrame; -} - --(EBCustomBannerViewAppearMode)currentAppearMode{ - return [self currentIsLandscape] ? _maker.landscapeMode : _maker.portraitMode; -} - --(void)dealloc{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBEmptyWindow.h b/demo/Pods/EBBannerView/EBBannerView/Classes/EBEmptyWindow.h deleted file mode 100644 index dd56e08..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBEmptyWindow.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// EBEmptyWindow.h -// EBBannerView -// -// Created by WTSD on 2018/1/10. -// - -#import - -@interface EBEmptyWindow : UIWindow - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBEmptyWindow.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBEmptyWindow.m deleted file mode 100644 index 492fe95..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBEmptyWindow.m +++ /dev/null @@ -1,16 +0,0 @@ -// -// EBEmptyWindow.m -// EBBannerView -// -// Created by WTSD on 2018/1/10. -// - -#import "EBEmptyWindow.h" - -@implementation EBEmptyWindow - --(UIWindowLevel)windowLevel{ - return UIWindowLevelAlert; -} - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.h b/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.h deleted file mode 100644 index 42f23e3..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// EBMuteSwitchDetector.h -// -// Created by 57380422@qq.com on 6/2/13. -// Copyright (c) 2013 57380422@qq.com. All rights reserved. -// - -#import - -@interface EBMuteDetector : NSObject - -+(EBMuteDetector*)sharedDetecotr; - --(void)detectComplete:(void (^)(BOOL isMute))completionHandler; - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.m b/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.m deleted file mode 100644 index 63d6281..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.m +++ /dev/null @@ -1,63 +0,0 @@ -// -// EBMuteSwitchDetector.m -// -// Created by 57380422@qq.comon 6/2/13. -// Copyright (c) 2013 57380422@qq.com. All rights reserved. -// - -#import "EBMuteDetector.h" -#import -#import - -@interface EBMuteDetector() - -@property (nonatomic,assign) NSTimeInterval interval; - -@property (nonatomic,assign) SystemSoundID soundId; - - -typedef void (^DetectCompleteBlock)(BOOL isMute); - -@property(nonatomic, copy)DetectCompleteBlock completeBlock; - -@end - -@implementation EBMuteDetector - -void EBSoundMuteNotificationCompletionProc(SystemSoundID ssID,void* clientData){ - NSTimeInterval elapsed = [NSDate timeIntervalSinceReferenceDate] - [EBMuteDetector sharedDetecotr].interval; - BOOL isMute = elapsed < 0.1; - [EBMuteDetector sharedDetecotr].completeBlock(isMute); -} - -+(EBMuteDetector*)sharedDetecotr{ - static EBMuteDetector* sharedDetecotr = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedDetecotr = [EBMuteDetector new]; - NSURL* url = [[NSBundle bundleForClass:[self class]] URLForResource:@"EBMuteDetector" withExtension:@"mp3"]; - if (AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &sharedDetecotr->_soundId) == kAudioServicesNoError){ - AudioServicesAddSystemSoundCompletion(sharedDetecotr.soundId, CFRunLoopGetMain(), kCFRunLoopDefaultMode, EBSoundMuteNotificationCompletionProc,(__bridge void *)(self)); - UInt32 yes = 1; - AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(sharedDetecotr.soundId),&sharedDetecotr->_soundId,sizeof(yes), &yes); - } else { - sharedDetecotr.soundId = -1; - } - }); - return sharedDetecotr; -} - --(void)detectComplete:(void (^)(BOOL isMute))completionHandler{ - self.interval = [NSDate timeIntervalSinceReferenceDate]; - AudioServicesPlaySystemSound(self.soundId); - self.completeBlock = completionHandler; -} - --(void)dealloc{ - if (self.soundId != -1){ - AudioServicesRemoveSystemSoundCompletion(self.soundId); - AudioServicesDisposeSystemSoundID(self.soundId); - } -} - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.mp3 b/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.mp3 deleted file mode 100755 index ece3352..0000000 Binary files a/demo/Pods/EBBannerView/EBBannerView/Classes/EBMuteDetector.mp3 and /dev/null differ diff --git a/demo/Pods/EBBannerView/EBBannerView/EBBannerView.h b/demo/Pods/EBBannerView/EBBannerView/EBBannerView.h deleted file mode 100644 index deafdc5..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/EBBannerView.h +++ /dev/null @@ -1,62 +0,0 @@ -// -// EBBannerView.h -// iOS-Foreground-Push-Notification -// -// Created by pikacode@qq.com on 16/7/21. -// Copyright © 2016年 57380422@qq.com. All rights reserved. -// - -#import - -typedef enum : NSInteger { - EBBannerViewStyleiOS8 = 8, - EBBannerViewStyleiOS9 = 9, - EBBannerViewStyleiOS10 = 10, - EBBannerViewStyleiOS11 = 11, - EBBannerViewStyleiOS12 = 12 -} EBBannerViewStyle; - -@protocol EBCustomBannerViewProtocol; -@class EBCustomBannerView, EBBannerViewMaker; - -@interface EBBannerView : UIView - -//show system version style with default values -+(void)showWithContent:(NSString*)content; - -//get a specific style banner, customize values below, then call 'show' -+(instancetype)bannerWithBlock:(void(^)(EBBannerViewMaker *make))block; --(void)show; - -//u don't have to call hide, this only use for (long_text && forbidAutoHiddenWhenSwipeDown = YES) --(void)hide; - -+(instancetype)current;//can be nil - -@end - -@interface EBBannerViewMaker : NSObject - -@property(nonatomic, assign)EBBannerViewStyle style;//default is UIDevice.currentDevice.systemVersion.intValue -@property(nonatomic, strong)UIImage *icon;//default is app icon -@property(nonatomic, strong)NSString *title;//default is app name -@property(nonatomic, strong)NSString *date;//default is "now" = "现在" -@property(nonatomic, strong)NSString *content; -@property(nonatomic, assign)NSTimeInterval showAnimationDuration;//default is 0.3 -@property(nonatomic, assign)NSTimeInterval hideAnimationDuration;//default is 0.5 -@property(nonatomic, assign)NSTimeInterval stayDuration;//default is 4.0 -@property(nonatomic, assign)NSTimeInterval swipeDownStayDuration;//default is 4.0 -@property(nonatomic, strong)id object;//default is content -@property(nonatomic, assign)UInt32 soundID;//default is 1312 -@property(nonatomic, strong)NSString *soundName; -@property(nonatomic, assign)BOOL vibrateOnMute;//default is YES -@property(nonatomic, assign)BOOL showDetailOrHideWhenClickLongText;//default is YES showDetail - -+(instancetype)defaultMaker; - -@end - -//add observer for this notification to handle tap event and get the 'object' above -extern NSString *const EBBannerViewDidClickNotification;//监听点击弹窗的事件 - - diff --git a/demo/Pods/EBBannerView/EBBannerView/EBBannerViewController.h b/demo/Pods/EBBannerView/EBBannerView/EBBannerViewController.h deleted file mode 100644 index 6a6ea53..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/EBBannerViewController.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// EBBannerViewController.h -// demo -// -// Created by pikacode@qq.com on 2017/10/23. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import - -@interface EBBannerViewController : UIViewController - -+(void)setSupportedInterfaceOrientations:(UIInterfaceOrientationMask)orientations; -+(void)setStatusBarHidden:(BOOL)hidden; - -@end diff --git a/demo/Pods/EBBannerView/EBBannerView/EBCustomBannerView.h b/demo/Pods/EBBannerView/EBBannerView/EBCustomBannerView.h deleted file mode 100644 index 144f432..0000000 --- a/demo/Pods/EBBannerView/EBBannerView/EBCustomBannerView.h +++ /dev/null @@ -1,48 +0,0 @@ -// -// EBCustomBannerView.h -// demo -// -// Created by pikacode@qq.com on 2017/10/20. -// Copyright © 2017年 pikacode@qq.com. All rights reserved. -// - -#import - -typedef enum : NSUInteger { - EBCustomViewAppearModeTop,//default - EBCustomViewAppearModeLeft, - EBCustomViewAppearModeRight, - EBCustomViewAppearModeBottom, - EBCustomViewAppearModeCenter -} EBCustomBannerViewAppearMode; - -@class EBCustomBannerViewMaker; -@interface EBCustomBannerView : NSObject - -//make a custom view and show immediately, -+(instancetype)showCustomView:(UIView*)view block:(void(^)(EBCustomBannerViewMaker *make))block; - -//make a custom view and show later -+(instancetype)customView:(UIView*)view block:(void(^)(EBCustomBannerViewMaker *make))block; - --(void)show; --(void)hide; - -@end - -@interface EBCustomBannerViewMaker : NSObject - -@property(nonatomic, assign)CGRect portraitFrame;//default is view.frame -@property(nonatomic, assign)CGRect landscapeFrame;//default is portraitFrame -@property(nonatomic, assign)UInt32 soundID;//default is 0 -@property(nonatomic, strong)NSString *soundName; -@property(nonatomic, assign)NSTimeInterval animationDuration;//default is 0.3 -@property(nonatomic, assign)NSTimeInterval stayDuration;//default is 4.0, set 0 will not hide -@property(nonatomic, assign)EBCustomBannerViewAppearMode portraitMode;//default is top -@property(nonatomic, assign)EBCustomBannerViewAppearMode landscapeMode;//default is top - -@property(nonatomic, strong)NSArray*centerModeDurations;//default is @[@0.3, @0.2, @0.1]; - -@property(nonatomic, assign)BOOL vibrateOnMute;//default is YES - -@end diff --git a/demo/Pods/EBBannerView/LICENSE b/demo/Pods/EBBannerView/LICENSE deleted file mode 100644 index c4b0ada..0000000 --- a/demo/Pods/EBBannerView/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 pikacode - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/demo/Pods/EBBannerView/README.md b/demo/Pods/EBBannerView/README.md deleted file mode 100644 index be8d3af..0000000 --- a/demo/Pods/EBBannerView/README.md +++ /dev/null @@ -1,221 +0,0 @@ -查看中文文档 [Chinese README.md](/README_CHS.md) - -Email:pikacode@qq.com - -QQ群: 345192153 - - - -# EBBannerView - -Only one line to show: - -- a banner the same style as iOS Push Notifications (auto show iOS 9/10/11/12 styles up to system version) -- auto play a sound or vibrate when the banner is showing - - -- support swipe down gesture for a long text - -And more: - -- custom banner's icon/title/date/content/animation_time_interval -- custom the sound (use system sound or play a sound file) - - -- autosize portrait/landscape frame -- show a custom view with different frame in portrait/landscape -- custom view has different animation mode, appear from top/left/right/left/center - - -- NSNotification with click event and pass a value - - - - -## Screenshot - -### System style: - - ![](screenshot/3.gif) - - - -### Custom style: - - ![](screenshot/4.gif) - - - -## Installation - -### pod - - target 'YourTargetName' do - pod 'EBBannerView' - end - - - -## Usage - - -### System style - ---- - -```objc -#import -``` - -2 ways to use: - - - -#### 1.Show a iOS style banner with one line - -up to system version,will show iOS 9/10/11 style,auto show app icon/name. - -```objc -[EBBannerView showWithContent:@"custom content"]; -``` - - - - -#### 2.Customize all values include iOS style - -```objc -//1.create a banner, custom all values -EBBannerView *banner = [EBBannerView bannerWithBlock:^(EBBannerViewMaker *make) { - make.style = EBBannerViewStyleiOS9;//custom system, default is current - //make.style = 9; - make.content = @"MINE eye hath played the painter and hath stelled"; - //make.object = ... - //make.icon = ... - //make.title = ... - //make.soundID = ... -}]; - -//2.show -[banner show]; -``` - - - -##### Parameters: - -(if not set will use default values) - -- `style`:the iOS style, default is `UIDevice.currentDevice.systemVersion.intValue`, type enum : NSInteger {9/10/11} -- `icon`:the icon, default is app icon, type UIImage -- `title`:the title, default is app name, type NSString -- `date`:the date, default is localized string @"现在" = @"now", type NSString -- `content`:the content, type NSString -- `showAnimationDuration`:the animation time(show the banner), type NSTimeInterval, default is 0.3 -- `hideAnimationDuration`:the animation time(hide the banner), type NSTimeInterval, default is 0.5 -- `stayDuration`:how long the banner will stay before hide, type NSTimeInterval, default is 4.0 -- `swipeDownStayDuration`:how long a long text banner will stay before hide when it is expanded, default is 4.0. U can set it a large value, then the banner will not hide, until customer click it or call 'hide' -- `object`:you can set it when create, then get it when clicked by adding an observer (see below), default is `content`,type id -- `soundID`:the sound will play when the banner is showing (when the mute is turn on iPhone will vibrate), type UInt32 - - - it's iOS system sound id, default push notification sound "Tritone" is 1312 - - More sound id to see here [iOS Predefined sounds](http://iphonedevwiki.net/index.php/AudioServices#) or here [AudioServices sounds](http://www.cocoachina.com/bbs/read.php?tid=134344) - - - You can download all the system sounds [UISounds.zip](/UISounds.zip) , listen and choose one which you perfer, then check out it's `id` with the form above -- `soundName`:play a cusome sound file, type NSString - - drag the file to Xcode proj - - pass the file name and extension,e.g. `banner.soundName = @"sound.mp3"` -- `showDetailOrHideWhenClickLongText`: when click a long text banner, expand it for all height or hide it, YES = expand/NO = hide, default is YES - - - - -### Custom style - ---- - -```objc -#import -``` - -2 ways to use: - - - -#### 1.create and show immediately - -```objc -UIView *view = ...;//the view want to show - -[EBCustomBannerView showCustomView:view block:^(EBCustomBannerViewMaker *make) { - make.portraitFrame = ...;//frame in portrait - make.portraitMode = EBCustomViewAppearModeTop;//appear from top in portrait - make.soundID = 1312; - make.stayDuration = 3.0; - //...... -}]; -``` - - - -#### 2.create and show after - -```objc -UIView *view = ...;//the view want to show - -//1. -EBCustomBannerView *customView = [EBCustomBannerView customView:view block:^(EBCustomBannerViewMaker *make) { - make.portraitFrame = ...; - make.portraitMode = EBCustomViewAppearModeTop; - make.soundID = 1312; - make.stayDuration = 3.0; - //...... -}]; - -//2. -[customView show]; -//[customView hide]; -``` - - - -##### Parameters: - -- `portraitFrame`: frame in portrait,default is view.frame,type CGRect -- `landscapeFrame`: frame in landscape,default is view.frame,type CGRect -- `soundID`: (the same as `system style`'s) -- `soundName`: (the same as `system style`'s) -- `animationDuration`: (the same as `system style`'s) -- `stayDuration`: (the same as `system style`'s) -- `portraitMode`: in portrait view appears from top/bottom/left/right/center, default is top, type enum -- `landscapeMode`: in landscape view appears from top/bottom/left/right/center, default is top, type enum -- `centerModeDurations`: the animation time of view appears from center, default is @[@0.3, @0.2, @0.1], `animationDuration` is invalid for center animation - - - - - -## Handle click event and pass value (system style) - -- add an observer for `EBBannerViewDidClickNotification` and handle click event -- pass an object when init the banner, and get it when clicked - -```objc -#import -{ - ... - EBBannerView *banner = [EBBannerView bannerWithBlock:^(EBBannerViewMaker *make) { - ... - make.object = aObject; - }]; -} - -{ - ... - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bannerViewDidClick:) name:EBBannerViewDidClickNotification object:nil]; -} - --(void)bannerViewDidClick:(NSNotification*)noti{ - NSLog(@"%@",noti.object); -} -``` diff --git a/demo/Pods/Manifest.lock b/demo/Pods/Manifest.lock index 1df29bb..b7aa8bd 100644 --- a/demo/Pods/Manifest.lock +++ b/demo/Pods/Manifest.lock @@ -13,4 +13,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 90f7b9d231aa1e228ab4f7e64027378e898d42e8 -COCOAPODS: 1.7.5 +COCOAPODS: 1.9.1 diff --git a/demo/Pods/Pods.xcodeproj/project.pbxproj b/demo/Pods/Pods.xcodeproj/project.pbxproj index 7dd3f2d..280d641 100644 --- a/demo/Pods/Pods.xcodeproj/project.pbxproj +++ b/demo/Pods/Pods.xcodeproj/project.pbxproj @@ -7,23 +7,23 @@ objects = { /* Begin PBXBuildFile section */ - 135BBBEA3F03A8BCCF00E68BA9C1EF41 /* EBBannerViewMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = BD88EF5D0D18CD3ED7ABCD1441763C3B /* EBBannerViewMaker.m */; }; - 14F0D631B625DBBB5EF319C543C605D9 /* EBBannerWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 19E4136F6C2C3F526D26AC1F249ED460 /* EBBannerWindow.m */; }; + 135BBBEA3F03A8BCCF00E68BA9C1EF41 /* EBBannerViewMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C1DD60328C2D98EAF385861C09F8BE6 /* EBBannerViewMaker.m */; }; + 14F0D631B625DBBB5EF319C543C605D9 /* EBBannerWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7828B3F34E87E82AFB6DEB6549ADDE36 /* EBBannerWindow.m */; }; 1D99CD896A5C4BF457DAC6A7D5933442 /* Pods-demo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CB52E66926AB9BC50637F9CA88E16E56 /* Pods-demo-dummy.m */; }; - 2DF8DCE07CA335E2392386F6352CE756 /* EBCustomBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 709CC9FF46F6807CB429883EE59128DB /* EBCustomBannerView.m */; }; - 5058FA5EF7C03E7360D7A4FC4D4CCB2C /* EBBannerWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = C9FCA0CC292EC7FAB3D72BA2CB243463 /* EBBannerWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5293CC8CE2EAAC25DAEE75773F02E4C8 /* EBMuteDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = CD131F4BEAB12FDAB532049F176DA6ED /* EBMuteDetector.m */; }; - 706CB5A269A002159FE54347A153414F /* EBBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A6E128E32144687B4FC542A4C1AAED /* EBBannerView.m */; }; - 721ADC8335FB4D9112834A11969E98A3 /* EBEmptyWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = E99FDC68F80C827AFB74B04E407172E5 /* EBEmptyWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 730F74A32BD802C6783E48D55D4F8120 /* EBBannerView+Categories.h in Headers */ = {isa = PBXBuildFile; fileRef = A57C75F1BE2C9C9AD6B67A47347BDA97 /* EBBannerView+Categories.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 78DCB6B31D2FAF9113D0B113659C775F /* EBBannerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 73CD79A8414115A84D1DED124DD1E1AB /* EBBannerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 794F2D9615DF3F739DC215B64BF6CBF3 /* EBMuteDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAD01A69C2018B817E06E6AFC5C4493 /* EBMuteDetector.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88F3D1080182C1DE87B1FCE09484CBE2 /* EBBannerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D7C9FBD338C6F8AC40CB0750434929F /* EBBannerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C98408B8261ADE84CAC471B47602484 /* EBBannerView+Categories.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F314EE4DB26795D9E77D0380118F1D /* EBBannerView+Categories.m */; }; - BF349425703DAF6C2D5975F7D731667B /* EBEmptyWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 262FE807163DA1D0BEA682F378967C68 /* EBEmptyWindow.m */; }; - CA70322998E2DB5E32E715A064A0AD3D /* EBCustomBannerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1518491EECBB6F6D660B51CFF1ED8898 /* EBCustomBannerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D4CFC8C29461B3AD09F123551E8B94B6 /* EBBannerView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E99F691BB841330134A7ABDF794C3C1B /* EBBannerView-dummy.m */; }; - FD6D8147A0E747582207618A21E67A05 /* EBBannerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0824C9293B90D70EE36D8253B2A109F4 /* EBBannerViewController.m */; }; + 2DF8DCE07CA335E2392386F6352CE756 /* EBCustomBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = B9A746B110D94A8D7ED55AC6B7EF5367 /* EBCustomBannerView.m */; }; + 5058FA5EF7C03E7360D7A4FC4D4CCB2C /* EBBannerWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = AA0FDE38FE266349D19B1B7A0EA3D105 /* EBBannerWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5293CC8CE2EAAC25DAEE75773F02E4C8 /* EBMuteDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 43E58F9A62A4CCFD9921D32D46969BAF /* EBMuteDetector.m */; }; + 706CB5A269A002159FE54347A153414F /* EBBannerView.m in Sources */ = {isa = PBXBuildFile; fileRef = C2CB3DC9A68B83B93ECF17183720C5D0 /* EBBannerView.m */; }; + 721ADC8335FB4D9112834A11969E98A3 /* EBEmptyWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = C9B08C2952F006FD2AAC96C98C6B46BD /* EBEmptyWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 730F74A32BD802C6783E48D55D4F8120 /* EBBannerView+Categories.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CB213BDE8D78A40C44C48AC78B3ED59 /* EBBannerView+Categories.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 78DCB6B31D2FAF9113D0B113659C775F /* EBBannerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 78FEF56BEEEAFAAAF845D8D09CB24EB7 /* EBBannerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 794F2D9615DF3F739DC215B64BF6CBF3 /* EBMuteDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = AB93DF1F581A8AC05C48B89363CCA858 /* EBMuteDetector.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 88F3D1080182C1DE87B1FCE09484CBE2 /* EBBannerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = D88D81ABB03A32F9F26591586F3F50A1 /* EBBannerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C98408B8261ADE84CAC471B47602484 /* EBBannerView+Categories.m in Sources */ = {isa = PBXBuildFile; fileRef = CAF831D9975F0D8A2B08E2F772A44580 /* EBBannerView+Categories.m */; }; + BF349425703DAF6C2D5975F7D731667B /* EBEmptyWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = C42AD8AE1ECE79F2B827E89E8452832A /* EBEmptyWindow.m */; }; + CA70322998E2DB5E32E715A064A0AD3D /* EBCustomBannerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 70CF47D722E70F8F963FCE35BDA001EF /* EBCustomBannerView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D4CFC8C29461B3AD09F123551E8B94B6 /* EBBannerView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 48CFA41EC0B76A43429EFB2556ED7EF3 /* EBBannerView-dummy.m */; }; + FD6D8147A0E747582207618A21E67A05 /* EBBannerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 21064F233978AA899D7D131E93981674 /* EBBannerViewController.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -37,37 +37,39 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0824C9293B90D70EE36D8253B2A109F4 /* EBBannerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerViewController.m; sourceTree = ""; }; - 1518491EECBB6F6D660B51CFF1ED8898 /* EBCustomBannerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EBCustomBannerView.h; path = EBBannerView/EBCustomBannerView.h; sourceTree = ""; }; - 19E4136F6C2C3F526D26AC1F249ED460 /* EBBannerWindow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerWindow.m; sourceTree = ""; }; - 262FE807163DA1D0BEA682F378967C68 /* EBEmptyWindow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBEmptyWindow.m; sourceTree = ""; }; - 2C4860F4D4D6C9848DDC8EB93C6F115F /* EBBannerViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EBBannerViewController.xib; path = EBBannerView/Classes/EBBannerViewController.xib; sourceTree = ""; }; - 3358ECAB4CE9C638FC383B225B3EEE3B /* EBMuteDetector.mp3 */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = audio.mp3; name = EBMuteDetector.mp3; path = EBBannerView/Classes/EBMuteDetector.mp3; sourceTree = ""; }; - 3F3E6262E23572C70CB18A676ED08769 /* EBBannerView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EBBannerView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 4BAD01A69C2018B817E06E6AFC5C4493 /* EBMuteDetector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EBMuteDetector.h; sourceTree = ""; }; - 5E2CD4C6F65A9810F517FAFBA7A2F2FB /* EBSystemBannerView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EBSystemBannerView.xib; path = EBBannerView/Classes/EBSystemBannerView.xib; sourceTree = ""; }; + 0CB213BDE8D78A40C44C48AC78B3ED59 /* EBBannerView+Categories.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EBBannerView+Categories.h"; sourceTree = ""; }; + 0F11E1E038EEDB3930DCACE2F928558D /* EBSystemBannerView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EBSystemBannerView.xib; path = EBBannerView/Classes/EBSystemBannerView.xib; sourceTree = ""; }; + 1C1DD60328C2D98EAF385861C09F8BE6 /* EBBannerViewMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerViewMaker.m; sourceTree = ""; }; + 21064F233978AA899D7D131E93981674 /* EBBannerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerViewController.m; sourceTree = ""; }; + 23CD2C96C69B46D3AE4CD00B9C94C9E7 /* EBBannerViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EBBannerViewController.xib; path = EBBannerView/Classes/EBBannerViewController.xib; sourceTree = ""; }; + 42D11FB474355459012121002BA6FE22 /* EBBannerView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EBBannerView-prefix.pch"; sourceTree = ""; }; + 43E58F9A62A4CCFD9921D32D46969BAF /* EBMuteDetector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBMuteDetector.m; sourceTree = ""; }; + 48CFA41EC0B76A43429EFB2556ED7EF3 /* EBBannerView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EBBannerView-dummy.m"; sourceTree = ""; }; 620C2E500E91AE09F121C9670613B82F /* libPods-demo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-demo.a"; path = "libPods-demo.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 65215EE9F2F77A24ECB9AEC76A25B299 /* Pods-demo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-demo-acknowledgements.markdown"; sourceTree = ""; }; - 709CC9FF46F6807CB429883EE59128DB /* EBCustomBannerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBCustomBannerView.m; sourceTree = ""; }; - 73CD79A8414115A84D1DED124DD1E1AB /* EBBannerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EBBannerView.h; path = EBBannerView/EBBannerView.h; sourceTree = ""; }; - 75A6E128E32144687B4FC542A4C1AAED /* EBBannerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerView.m; sourceTree = ""; }; + 66C332D53534D06B1BC7EB73FD0785F8 /* EBBannerView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EBBannerView.release.xcconfig; sourceTree = ""; }; + 70CF47D722E70F8F963FCE35BDA001EF /* EBCustomBannerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EBCustomBannerView.h; path = EBBannerView/EBCustomBannerView.h; sourceTree = ""; }; + 7828B3F34E87E82AFB6DEB6549ADDE36 /* EBBannerWindow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerWindow.m; sourceTree = ""; }; + 78FEF56BEEEAFAAAF845D8D09CB24EB7 /* EBBannerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EBBannerView.h; path = EBBannerView/EBBannerView.h; sourceTree = ""; }; 7A7F91736DF67A7962CE1C1C807B14DE /* Pods-demo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-demo-acknowledgements.plist"; sourceTree = ""; }; - 7D7C9FBD338C6F8AC40CB0750434929F /* EBBannerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EBBannerViewController.h; path = EBBannerView/EBBannerViewController.h; sourceTree = ""; }; - 92CFA2B85ADDF6FE0477288B14DDBAAB /* EBBannerView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EBBannerView-prefix.pch"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A57C75F1BE2C9C9AD6B67A47347BDA97 /* EBBannerView+Categories.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EBBannerView+Categories.h"; sourceTree = ""; }; - B3F314EE4DB26795D9E77D0380118F1D /* EBBannerView+Categories.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EBBannerView+Categories.m"; sourceTree = ""; }; - BD88EF5D0D18CD3ED7ABCD1441763C3B /* EBBannerViewMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerViewMaker.m; sourceTree = ""; }; + A1224E0E3C99635263FBFE4568CED842 /* EBBannerView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EBBannerView.xib; path = EBBannerView/Classes/EBBannerView.xib; sourceTree = ""; }; + AA0FDE38FE266349D19B1B7A0EA3D105 /* EBBannerWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EBBannerWindow.h; sourceTree = ""; }; + AB93DF1F581A8AC05C48B89363CCA858 /* EBMuteDetector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EBMuteDetector.h; sourceTree = ""; }; + B5A0192CE71A426D2559FC39F9C62C55 /* EBBannerView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EBBannerView.debug.xcconfig; sourceTree = ""; }; + B9A746B110D94A8D7ED55AC6B7EF5367 /* EBCustomBannerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBCustomBannerView.m; sourceTree = ""; }; BE22CB6940ABA456A76106EA38199292 /* Pods-demo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-demo.release.xcconfig"; sourceTree = ""; }; + C17BDEC160BFC3564106C2A55D48505D /* EBBannerView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EBBannerView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + C2CB3DC9A68B83B93ECF17183720C5D0 /* EBBannerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBBannerView.m; sourceTree = ""; }; + C42AD8AE1ECE79F2B827E89E8452832A /* EBEmptyWindow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBEmptyWindow.m; sourceTree = ""; }; C51BAA6DED44105DB89633F3B7584039 /* Pods-demo-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-demo-resources.sh"; sourceTree = ""; }; - C9FCA0CC292EC7FAB3D72BA2CB243463 /* EBBannerWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EBBannerWindow.h; sourceTree = ""; }; + C9B08C2952F006FD2AAC96C98C6B46BD /* EBEmptyWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EBEmptyWindow.h; sourceTree = ""; }; + CAF831D9975F0D8A2B08E2F772A44580 /* EBBannerView+Categories.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EBBannerView+Categories.m"; sourceTree = ""; }; CB52E66926AB9BC50637F9CA88E16E56 /* Pods-demo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-demo-dummy.m"; sourceTree = ""; }; - CC82678CF2F84769FFCC616591191EED /* EBBannerView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EBBannerView.xcconfig; sourceTree = ""; }; - CD131F4BEAB12FDAB532049F176DA6ED /* EBMuteDetector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EBMuteDetector.m; sourceTree = ""; }; + D88D81ABB03A32F9F26591586F3F50A1 /* EBBannerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EBBannerViewController.h; path = EBBannerView/EBBannerViewController.h; sourceTree = ""; }; + DBE01C9CF12982E55B52635C952F5CCE /* EBMuteDetector.mp3 */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = audio.mp3; name = EBMuteDetector.mp3; path = EBBannerView/Classes/EBMuteDetector.mp3; sourceTree = ""; }; DCCE1D29786AADF681B45E66155E3FBE /* libEBBannerView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libEBBannerView.a; path = libEBBannerView.a; sourceTree = BUILT_PRODUCTS_DIR; }; E990D9D145BCFAC430C284853D425FD6 /* Pods-demo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-demo.debug.xcconfig"; sourceTree = ""; }; - E99F691BB841330134A7ABDF794C3C1B /* EBBannerView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EBBannerView-dummy.m"; sourceTree = ""; }; - E99FDC68F80C827AFB74B04E407172E5 /* EBEmptyWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EBEmptyWindow.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -97,49 +99,38 @@ name = Products; sourceTree = ""; }; - 04AE5A7D0E9C2E94C8BBC68264E93E61 /* Classes */ = { + 042AA5615B3381491C4D8769D1B0137E /* Pod */ = { isa = PBXGroup; children = ( - 75A6E128E32144687B4FC542A4C1AAED /* EBBannerView.m */, - A57C75F1BE2C9C9AD6B67A47347BDA97 /* EBBannerView+Categories.h */, - B3F314EE4DB26795D9E77D0380118F1D /* EBBannerView+Categories.m */, - 0824C9293B90D70EE36D8253B2A109F4 /* EBBannerViewController.m */, - BD88EF5D0D18CD3ED7ABCD1441763C3B /* EBBannerViewMaker.m */, - C9FCA0CC292EC7FAB3D72BA2CB243463 /* EBBannerWindow.h */, - 19E4136F6C2C3F526D26AC1F249ED460 /* EBBannerWindow.m */, - 709CC9FF46F6807CB429883EE59128DB /* EBCustomBannerView.m */, - E99FDC68F80C827AFB74B04E407172E5 /* EBEmptyWindow.h */, - 262FE807163DA1D0BEA682F378967C68 /* EBEmptyWindow.m */, - 4BAD01A69C2018B817E06E6AFC5C4493 /* EBMuteDetector.h */, - CD131F4BEAB12FDAB532049F176DA6ED /* EBMuteDetector.m */, - ); - name = Classes; - path = EBBannerView/Classes; - sourceTree = ""; - }; - 09CBD336016553272B2FD818C20B6E7E /* Pod */ = { - isa = PBXGroup; - children = ( - 3F3E6262E23572C70CB18A676ED08769 /* EBBannerView.podspec */, + C17BDEC160BFC3564106C2A55D48505D /* EBBannerView.podspec */, ); name = Pod; sourceTree = ""; }; - 10AA435518F564F6E51E5E9E1BDC0318 /* Support Files */ = { + 194CE9D10C4B16D70504AC15A6D907D8 /* Classes */ = { isa = PBXGroup; children = ( - CC82678CF2F84769FFCC616591191EED /* EBBannerView.xcconfig */, - E99F691BB841330134A7ABDF794C3C1B /* EBBannerView-dummy.m */, - 92CFA2B85ADDF6FE0477288B14DDBAAB /* EBBannerView-prefix.pch */, + C2CB3DC9A68B83B93ECF17183720C5D0 /* EBBannerView.m */, + 0CB213BDE8D78A40C44C48AC78B3ED59 /* EBBannerView+Categories.h */, + CAF831D9975F0D8A2B08E2F772A44580 /* EBBannerView+Categories.m */, + 21064F233978AA899D7D131E93981674 /* EBBannerViewController.m */, + 1C1DD60328C2D98EAF385861C09F8BE6 /* EBBannerViewMaker.m */, + AA0FDE38FE266349D19B1B7A0EA3D105 /* EBBannerWindow.h */, + 7828B3F34E87E82AFB6DEB6549ADDE36 /* EBBannerWindow.m */, + B9A746B110D94A8D7ED55AC6B7EF5367 /* EBCustomBannerView.m */, + C9B08C2952F006FD2AAC96C98C6B46BD /* EBEmptyWindow.h */, + C42AD8AE1ECE79F2B827E89E8452832A /* EBEmptyWindow.m */, + AB93DF1F581A8AC05C48B89363CCA858 /* EBMuteDetector.h */, + 43E58F9A62A4CCFD9921D32D46969BAF /* EBMuteDetector.m */, ); - name = "Support Files"; - path = "demo/Pods/Target Support Files/EBBannerView"; + name = Classes; + path = EBBannerView/Classes; sourceTree = ""; }; 1F8874C0B07A7DADD355252A91DFE814 /* Development Pods */ = { isa = PBXGroup; children = ( - 7584CB2917A2E395046BE5CBFC729451 /* EBBannerView */, + EA22445D7E8C854F793DF362BA4E6F3D /* EBBannerView */, ); name = "Development Pods"; sourceTree = ""; @@ -152,19 +143,16 @@ name = "Targets Support Files"; sourceTree = ""; }; - 7584CB2917A2E395046BE5CBFC729451 /* EBBannerView */ = { + 7E94C1419E6F8C45B58E8D9C2067510A /* Support Files */ = { isa = PBXGroup; children = ( - 73CD79A8414115A84D1DED124DD1E1AB /* EBBannerView.h */, - 7D7C9FBD338C6F8AC40CB0750434929F /* EBBannerViewController.h */, - 1518491EECBB6F6D660B51CFF1ED8898 /* EBCustomBannerView.h */, - 04AE5A7D0E9C2E94C8BBC68264E93E61 /* Classes */, - 09CBD336016553272B2FD818C20B6E7E /* Pod */, - 92A9A3470E1D488F8BABDE1896EEABC8 /* Resources */, - 10AA435518F564F6E51E5E9E1BDC0318 /* Support Files */, + 48CFA41EC0B76A43429EFB2556ED7EF3 /* EBBannerView-dummy.m */, + 42D11FB474355459012121002BA6FE22 /* EBBannerView-prefix.pch */, + B5A0192CE71A426D2559FC39F9C62C55 /* EBBannerView.debug.xcconfig */, + 66C332D53534D06B1BC7EB73FD0785F8 /* EBBannerView.release.xcconfig */, ); - name = EBBannerView; - path = ../..; + name = "Support Files"; + path = "demo/Pods/Target Support Files/EBBannerView"; sourceTree = ""; }; 8CF7CABFFC9AA602C1EF25B1F3A4077D /* Pods-demo */ = { @@ -181,16 +169,6 @@ path = "Target Support Files/Pods-demo"; sourceTree = ""; }; - 92A9A3470E1D488F8BABDE1896EEABC8 /* Resources */ = { - isa = PBXGroup; - children = ( - 2C4860F4D4D6C9848DDC8EB93C6F115F /* EBBannerViewController.xib */, - 3358ECAB4CE9C638FC383B225B3EEE3B /* EBMuteDetector.mp3 */, - 5E2CD4C6F65A9810F517FAFBA7A2F2FB /* EBSystemBannerView.xib */, - ); - name = Resources; - sourceTree = ""; - }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( @@ -202,6 +180,17 @@ ); sourceTree = ""; }; + CFF34F6153E935BDFD7900CEEFA8ADA4 /* Resources */ = { + isa = PBXGroup; + children = ( + A1224E0E3C99635263FBFE4568CED842 /* EBBannerView.xib */, + 23CD2C96C69B46D3AE4CD00B9C94C9E7 /* EBBannerViewController.xib */, + DBE01C9CF12982E55B52635C952F5CCE /* EBMuteDetector.mp3 */, + 0F11E1E038EEDB3930DCACE2F928558D /* EBSystemBannerView.xib */, + ); + name = Resources; + sourceTree = ""; + }; D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -209,6 +198,21 @@ name = Frameworks; sourceTree = ""; }; + EA22445D7E8C854F793DF362BA4E6F3D /* EBBannerView */ = { + isa = PBXGroup; + children = ( + 78FEF56BEEEAFAAAF845D8D09CB24EB7 /* EBBannerView.h */, + D88D81ABB03A32F9F26591586F3F50A1 /* EBBannerViewController.h */, + 70CF47D722E70F8F963FCE35BDA001EF /* EBCustomBannerView.h */, + 194CE9D10C4B16D70504AC15A6D907D8 /* Classes */, + 042AA5615B3381491C4D8769D1B0137E /* Pod */, + CFF34F6153E935BDFD7900CEEFA8ADA4 /* Resources */, + 7E94C1419E6F8C45B58E8D9C2067510A /* Support Files */, + ); + name = EBBannerView; + path = ../..; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -286,6 +290,7 @@ hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; productRefGroup = 03287A47EA3B5F13FD23B4F98224091F /* Products */; @@ -481,9 +486,9 @@ }; name = Debug; }; - B584D9C53A9AA4A6EF0C8AB49FADE5CF /* Debug */ = { + AB3DB08581EFBD992F298586FD2E3ED7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CC82678CF2F84769FFCC616591191EED /* EBBannerView.xcconfig */; + baseConfigurationReference = B5A0192CE71A426D2559FC39F9C62C55 /* EBBannerView.debug.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -525,9 +530,9 @@ }; name = Debug; }; - EBE463ED94A6349E0D0341AC5D1DAEE2 /* Release */ = { + BA7DC6A54CC1361275BA0F77EC70CD39 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CC82678CF2F84769FFCC616591191EED /* EBBannerView.xcconfig */; + baseConfigurationReference = 66C332D53534D06B1BC7EB73FD0785F8 /* EBBannerView.release.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -555,8 +560,8 @@ 07D77F023F7C4BA73C65C49524B332D5 /* Build configuration list for PBXNativeTarget "EBBannerView" */ = { isa = XCConfigurationList; buildConfigurations = ( - B584D9C53A9AA4A6EF0C8AB49FADE5CF /* Debug */, - EBE463ED94A6349E0D0341AC5D1DAEE2 /* Release */, + AB3DB08581EFBD992F298586FD2E3ED7 /* Debug */, + BA7DC6A54CC1361275BA0F77EC70CD39 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/EBBannerView.xcscheme b/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/EBBannerView.xcscheme deleted file mode 100644 index 52f1fd6..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/EBBannerView.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/Pods-demo.xcscheme b/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/Pods-demo.xcscheme deleted file mode 100644 index c3bad07..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/Pods-demo.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/xcschememanagement.plist b/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index c007c17..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/YCYL.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,25 +0,0 @@ - - - - - SchemeUserState - - EBBannerView.xcscheme - - isShown - - orderHint - 0 - - Pods-demo.xcscheme - - isShown - - orderHint - 1 - - - SuppressBuildableAutocreation - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/pikacode.xcuserdatad/xcschemes/xcschememanagement.plist b/demo/Pods/Pods.xcodeproj/xcuserdata/pikacode.xcuserdatad/xcschemes/xcschememanagement.plist index b54741e..c007c17 100644 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/pikacode.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/demo/Pods/Pods.xcodeproj/xcuserdata/pikacode.xcuserdatad/xcschemes/xcschememanagement.plist @@ -8,11 +8,15 @@ isShown + orderHint + 0 Pods-demo.xcscheme isShown + orderHint + 1 SuppressBuildableAutocreation diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/EBBannerView.xcscheme b/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/EBBannerView.xcscheme deleted file mode 100644 index 970770f..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/EBBannerView.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/Pods-demo.xcscheme b/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/Pods-demo.xcscheme deleted file mode 100644 index c3bad07..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/Pods-demo.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/xcschememanagement.plist b/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index c007c17..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/wtsd.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,25 +0,0 @@ - - - - - SchemeUserState - - EBBannerView.xcscheme - - isShown - - orderHint - 0 - - Pods-demo.xcscheme - - isShown - - orderHint - 1 - - - SuppressBuildableAutocreation - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/EBBannerView.xcscheme b/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/EBBannerView.xcscheme deleted file mode 100644 index 52f1fd6..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/EBBannerView.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/Pods-demo.xcscheme b/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/Pods-demo.xcscheme deleted file mode 100644 index c3bad07..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/Pods-demo.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/xcschememanagement.plist b/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index b54741e..0000000 --- a/demo/Pods/Pods.xcodeproj/xcuserdata/wxc.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,21 +0,0 @@ - - - - - SchemeUserState - - EBBannerView.xcscheme - - isShown - - - Pods-demo.xcscheme - - isShown - - - - SuppressBuildableAutocreation - - - diff --git a/demo/Pods/Target Support Files/EBBannerView/EBBannerView.xcconfig b/demo/Pods/Target Support Files/EBBannerView/EBBannerView.debug.xcconfig similarity index 92% rename from demo/Pods/Target Support Files/EBBannerView/EBBannerView.xcconfig rename to demo/Pods/Target Support Files/EBBannerView/EBBannerView.debug.xcconfig index 7ab7306..3cb3114 100644 --- a/demo/Pods/Target Support Files/EBBannerView/EBBannerView.xcconfig +++ b/demo/Pods/Target Support Files/EBBannerView/EBBannerView.debug.xcconfig @@ -7,3 +7,4 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/demo/Pods/Target Support Files/EBBannerView/EBBannerView.release.xcconfig b/demo/Pods/Target Support Files/EBBannerView/EBBannerView.release.xcconfig new file mode 100644 index 0000000..3cb3114 --- /dev/null +++ b/demo/Pods/Target Support Files/EBBannerView/EBBannerView.release.xcconfig @@ -0,0 +1,10 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EBBannerView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/EBBannerView" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EBBannerView" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/demo/Pods/Target Support Files/Pods-demo/Pods-demo-frameworks.sh b/demo/Pods/Target Support Files/Pods-demo/Pods-demo-frameworks.sh deleted file mode 100755 index 08e3eaa..0000000 --- a/demo/Pods/Target Support Files/Pods-demo/Pods-demo-frameworks.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} - -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" - fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" - fi - fi -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=1 -} - -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/demo/Pods/Target Support Files/Pods-demo/Pods-demo-resources.sh b/demo/Pods/Target Support Files/Pods-demo/Pods-demo-resources.sh index fcf947c..31445fc 100755 --- a/demo/Pods/Target Support Files/Pods-demo/Pods-demo-resources.sh +++ b/demo/Pods/Target Support Files/Pods-demo/Pods-demo-resources.sh @@ -97,11 +97,13 @@ EOM esac } if [[ "$CONFIGURATION" == "Debug" ]]; then + install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBBannerView.xib" install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBBannerViewController.xib" install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBMuteDetector.mp3" install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBSystemBannerView.xib" fi if [[ "$CONFIGURATION" == "Release" ]]; then + install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBBannerView.xib" install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBBannerViewController.xib" install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBMuteDetector.mp3" install_resource "${PODS_ROOT}/../../EBBannerView/Classes/EBSystemBannerView.xib" @@ -118,7 +120,7 @@ rm -f "$RESOURCES_TO_COPY" if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] then # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + OTHER_XCASSETS=$(find -L "$PWD" -iname "*.xcassets" -type d) while read line; do if [[ $line != "${PODS_ROOT}*" ]]; then XCASSET_FILES+=("$line") diff --git a/demo/Pods/Target Support Files/Pods-demo/Pods-demo.debug.xcconfig b/demo/Pods/Target Support Files/Pods-demo/Pods-demo.debug.xcconfig index 2e68477..2cb4a7f 100644 --- a/demo/Pods/Target Support Files/Pods-demo/Pods-demo.debug.xcconfig +++ b/demo/Pods/Target Support Files/Pods-demo/Pods-demo.debug.xcconfig @@ -6,3 +6,4 @@ PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/demo/Pods/Target Support Files/Pods-demo/Pods-demo.release.xcconfig b/demo/Pods/Target Support Files/Pods-demo/Pods-demo.release.xcconfig index 2e68477..2cb4a7f 100644 --- a/demo/Pods/Target Support Files/Pods-demo/Pods-demo.release.xcconfig +++ b/demo/Pods/Target Support Files/Pods-demo/Pods-demo.release.xcconfig @@ -6,3 +6,4 @@ PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/demo/demo.xcodeproj/project.pbxproj b/demo/demo.xcodeproj/project.pbxproj index 48abfb0..73c785e 100644 --- a/demo/demo.xcodeproj/project.pbxproj +++ b/demo/demo.xcodeproj/project.pbxproj @@ -190,7 +190,7 @@ 0D292C1D1F94A27200BA5B87 /* Sources */, 0D292C1E1F94A27200BA5B87 /* Frameworks */, 0D292C1F1F94A27200BA5B87 /* Resources */, - 5984C61B8C2B4544D85B08A0 /* [CP] Copy Pods Resources */, + 5AA309ED22B1E67FF73EE596 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -254,19 +254,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 5984C61B8C2B4544D85B08A0 /* [CP] Copy Pods Resources */ = { + 5AA309ED22B1E67FF73EE596 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-demo/Pods-demo-resources.sh", + "${PODS_ROOT}/../../EBBannerView/Classes/EBBannerView.xib", "${PODS_ROOT}/../../EBBannerView/Classes/EBBannerViewController.xib", "${PODS_ROOT}/../../EBBannerView/Classes/EBMuteDetector.mp3", "${PODS_ROOT}/../../EBBannerView/Classes/EBSystemBannerView.xib", ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EBBannerView.nib", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EBBannerViewController.nib", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EBMuteDetector.mp3", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EBSystemBannerView.nib", diff --git a/demo/demo.xcworkspace/xcuserdata/YCYL.xcuserdatad/UserInterfaceState.xcuserstate b/demo/demo.xcworkspace/xcuserdata/YCYL.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 8acf8e4..0000000 Binary files a/demo/demo.xcworkspace/xcuserdata/YCYL.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/IDEFindNavigatorScopes.plist b/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/IDEFindNavigatorScopes.plist deleted file mode 100644 index 5dd5da8..0000000 --- a/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/IDEFindNavigatorScopes.plist +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate b/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate index 04b8b20..807ef1c 100644 Binary files a/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate and b/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 1a61358..879e45c 100644 --- a/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/demo/demo.xcworkspace/xcuserdata/pikacode.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -1,13 +1,13 @@ - - - - - - - - - - - - diff --git a/demo/demo.xcworkspace/xcuserdata/wtsd.xcuserdatad/UserInterfaceState.xcuserstate b/demo/demo.xcworkspace/xcuserdata/wtsd.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 876b2db..0000000 Binary files a/demo/demo.xcworkspace/xcuserdata/wtsd.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/demo/demo.xcworkspace/xcuserdata/wtsd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/demo/demo.xcworkspace/xcuserdata/wtsd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index ed9a9b4..0000000 --- a/demo/demo.xcworkspace/xcuserdata/wtsd.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/demo/demo.xcworkspace/xcuserdata/wxc.xcuserdatad/UserInterfaceState.xcuserstate b/demo/demo.xcworkspace/xcuserdata/wxc.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index b2e6129..0000000 Binary files a/demo/demo.xcworkspace/xcuserdata/wxc.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/demo/demo.xcworkspace/xcuserdata/wxc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/demo/demo.xcworkspace/xcuserdata/wxc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index ed9a9b4..0000000 --- a/demo/demo.xcworkspace/xcuserdata/wxc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - -