English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이하의 그림을 통해 효과를 보여드립니다:
swift: https://github.com/corin8823/Popover OC: https://github.com/Assuner-Lee/PopoverObjC
사용 예제
pod 'PopoverObjC' #import "ASViewController.h" #import <PopoverObjC/ASPopover.h> @interface ASViewController () @property (weak, nonatomic) IBOutlet UIButton *btn; @property (nonatomic, strong) ASPopover *btnPopover; @property (nonatomic, strong) ASPopover *itemPopover; @end @implementation ASViewController - (void)viewDidLoad { [super viewDidLoad]; [self.btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"item" style:UIBarButtonItemStylePlain target:self action:@selector(clickItem:)]; } - (void)didReceiveMemoryWarning { }
Popover을 초기화합니다
- (ASPopover *)btnPopover { if (!_btnPopover) { ASPopoverOption *option = [[ASPopoverOption alloc] init]; option.popoverType = ASPopoverTypeUp; option.autoAjustDirection = NO; option.arrowSize = CGSizeMake(9, 6); option.blackOverlayColor = [UIColor clearColor]; option.popoverColor = [UIColor lightGrayColor]; option.dismissOnBlackOverlayTap = YES; option.animationIn = 0.5; //... _btnPopover = [[ASPopover alloc] initWithOption:option]; } return _btnPopover; } - (ASPopover *)itemPopover { if (!_itemPopover) { ASPopoverOption *option = [[ASPopoverOption alloc] init]; option.autoAjustDirection = NO; option.arrowSize = CGSizeMake(10, 6); option.blackOverlayColor = [UIColor clearColor]; option.sideEdge = 7; option.dismissOnBlackOverlayTap = YES; option.popoverColor = [[UIColor blackColor] colorWithAlphaComponent:0.7; option.autoAjustDirection = YES; option.animationIn = 0.4; option.springDamping = 0.5; option.initialSpringVelocity = 1; option.overlayBlur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; //... _itemPopover = [[ASPopover alloc] initWithOption:option]; } return _itemPopover; }
팝업의 속성은 option에서 설정할 수 있습니다.
팝업 표시
- (void)clickBtn:(id)sender { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width - 50, 40)]; [self.btnPopover show:view fromView:self.btn]; // in delegate window } - (void)clickItem:(id)sender { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)]; UIView *itemView = [self.navigationItem.rightBarButtonItem valueForKey:@"view"]; // item에 사용할 커스텀 뷰를 설정해야 합니다; if (itemView) { // [self.itemPopover show:view fromView:itemView]; CGPoint originPoint = [self.itemPopover originArrowPointWithView:view fromView:itemView]; originPoint.y += 5; [self.itemPopover show:view atPoint:originPoint]; } } @end
可在某一个视图或某一个point上弹出内容view
Popover interface #import <UIKit/UIKit.h> #import "ASPopoverOption.h" typedef void (^ASPopoverBlock)(void); @interface ASPopover : UIView @property (nonatomic, copy) ASPopoverBlock willShowHandler; @property (nonatomic, copy) ASPopoverBlock willDismissHandler; @property (nonatomic, copy) ASPopoverBlock didShowHandler; @property (nonatomic, copy) ASPopoverBlock didDismissHandler; @property (nonatomic, strong) ASPopoverOption *option; - (instancetype)initWithOption:(ASPopoverOption *)option; - (void)dismiss; - (void)show:(UIView *)contentView fromView:(UIView *)fromView; - (void)show:(UIView *)contentView fromView:(UIView *)fromView inView:(UIView *)inView; - (void)show:(UIView *)contentView atPoint:(CGPoint)point; - (void)show:(UIView *contentView atPoint:(CGPoint)point inView:(UIView *)inView; - (CGPoint)originArrowPointWithView:(UIView *)contentView fromView:(UIView *)fromView; - (CGPoint)arrowPointWithView:(UIView *)contentView fromView:(UIView *)fromView inView:(UIView *)inView popoverType:(ASPopoverType)type; @end
contentView: 나타내려는 내용; fromView: 풍선이 보여지는 뷰에서 show; inView: 풍선이 그려지는 뷰, 일반적으로 delegate window; atPoint: 풍선이 보여지는 점; originPoint를 먼저 가져와서 이동할 수 있습니다;
PopoverOption Interface typedef NS_ENUM(NSInteger, ASPopoverType) { ASPopoverTypeUp = 0, ASPopoverTypeDown, }; @interface ASPopoverOption : NSObject @property (nonatomic, assign) CGSize arrowSize; @property (nonatomic, assign) NSTimeInterval animationIn; // if 0, no animation @property (nonatomic, assign) NSTimeInterval animationOut; @property (nonatomic, assign) CGFloat cornerRadius; @property (nonatomic, assign) CGFloat sideEdge; @property (nonatomic, strong) UIColor *blackOverlayColor; @property (nonatomic, strong) UIBlurEffect *overlayBlur; @property (nonatomic, strong) UIColor *popoverColor; @property (nonatomic, assign) BOOL dismissOnBlackOverlayTap; @property (nonatomic, assign) BOOL showBlackOverlay; @property (nonatomic, assign) CGFloat springDamping; @property (nonatomic, assign) CGFloat initialSpringVelocity; @property (nonatomic, assign) ASPopoverType popoverType; @property (nonatomic, assign) BOOL highlightFromView; @property (nonatomic, assign) CGFloat highlightCornerRadius; @property (nonatomic, assign) BOOL autoAdjustDirection; // down preferred, effect just in view not at point @end
결론
위에 설명된 것은 편집자가 여러분에게 소개한 간단하고 쉽게 사용할 수 있으며 자유롭게 맞춤화할 수 있는 iOS Popover 툴팁 효과입니다. 여러분이 어떤 질문이나 의문이 있으면, 편집자가 즉시 답변해 드리겠습니다. 여기서도 여러분의 지지에 감사드립니다.
고지사항: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자는 모두입니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 있는 내용을 발견하면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(메일을 보내는 경우, #을 @으로 변경하십시오. 이를 통해 신고하고 관련 증거를 제공하십시오. 실제로 확인되면, 이 사이트는 즉시 위반된 내용을 삭제합니다.)