UIPopoverPresentationController 淡入
UIPopoverPresentationController Fade In
在我的 iOS8+ 项目中,我使用 UIPopoverPresentationController 展示了一个 UIViewController:
vc.modalPresentationStyle = UIModalPresentationPopover;
vc.popoverPresentationController.delegate = self;
vc.popoverPresentationController.sourceView = self.someView.superview;
vc.popoverPresentationController.sourceRect = self.someView.frame;
vc.popoverPresentationController.backgroundColor = [UIColor clearColor];
vc.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown;
vc.preferredContentSize = CGSizeMake(200, 500);
(同时实现委托方法强制弹出)
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
return UIModalPresentationNone;
}
目前,它会立即出现在呈现的 UIViewController 上方(并随着淡出而消失)。谁能指导我自定义此演示文稿,使其淡入?
这是我的建议:
- (void)showRight:(NSString*)title{
UIButton *rightBtn=[UIButton buttonWithType:UIButtonTypeCustom];
rightBtn.exclusiveTouch = YES;
rightBtn.frame=CGRectMake(0, 0, 70, 44);
rightBtn.titleLabel.font=[UIFont systemFontOfSize:15];
[rightBtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[rightBtn setTitle:title forState:UIControlStateNormal];
rightBtn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentRight;
[rightBtn addTarget:self action:@selector(onClickRight:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];
}
-(void)onClickRight:(UIButton *)bar{
NSLog(@"bubble");
POPViewController *popVC = [[POPViewController alloc] init];
UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:popVC];/*-> Here popVC is a controller you want to show in popoverview *******/
popVC.preferredContentSize = CGSizeMake(280,200);
destNav.modalPresentationStyle = UIModalPresentationPopover;
_dateTimePopover8 = destNav.popoverPresentationController;
_dateTimePopover8.delegate = self;
_dateTimePopover8.sourceView = self.view;
// _dateTimePopover8.sourceRect = CGRectMake(0, 64, 70, 44);// CGRectMake(SCREEN_W-20, 64, 70, 44);;//->Here Rect is you want show position
// ->here I got the rightBarButtonItem position and show
CGRect frame = [[self.navigationItem.rightBarButtonItem valueForKey:@"view"] frame];
frame.origin.y = frame.origin.y+10;
frame.origin.x = frame.origin.x+15;
_dateTimePopover8.sourceRect = frame;
destNav.navigationBarHidden = YES;
[self presentViewController:destNav animated:YES completion:nil];
}
- (UIModalPresentationStyle) adaptivePresentationStyleForPresentationController: (UIPresentationController * ) controller {
return UIModalPresentationNone;
}
-(void)hideIOS8PopOver
{
[self dismissViewControllerAnimated:YES completion:nil];
}
希望能帮到你!
我可以通过简单的设置来达到效果:
[self.view setAlpha: 0.0];
[self.popoverPresentationController.containerView setAlpha:0.0];
在popoverviewController的viewWillAppear:
方法中,然后调用
[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.view setAlpha:1.0];
[self.popoverPresentationController.containerView setAlpha:1.0];
} completion:nil];
在 viewDidAppear:
方法中。
在我的 iOS8+ 项目中,我使用 UIPopoverPresentationController 展示了一个 UIViewController:
vc.modalPresentationStyle = UIModalPresentationPopover;
vc.popoverPresentationController.delegate = self;
vc.popoverPresentationController.sourceView = self.someView.superview;
vc.popoverPresentationController.sourceRect = self.someView.frame;
vc.popoverPresentationController.backgroundColor = [UIColor clearColor];
vc.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown;
vc.preferredContentSize = CGSizeMake(200, 500);
(同时实现委托方法强制弹出)
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
return UIModalPresentationNone;
}
目前,它会立即出现在呈现的 UIViewController 上方(并随着淡出而消失)。谁能指导我自定义此演示文稿,使其淡入?
这是我的建议:
- (void)showRight:(NSString*)title{
UIButton *rightBtn=[UIButton buttonWithType:UIButtonTypeCustom];
rightBtn.exclusiveTouch = YES;
rightBtn.frame=CGRectMake(0, 0, 70, 44);
rightBtn.titleLabel.font=[UIFont systemFontOfSize:15];
[rightBtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[rightBtn setTitle:title forState:UIControlStateNormal];
rightBtn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentRight;
[rightBtn addTarget:self action:@selector(onClickRight:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightBtn];
}
-(void)onClickRight:(UIButton *)bar{
NSLog(@"bubble");
POPViewController *popVC = [[POPViewController alloc] init];
UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:popVC];/*-> Here popVC is a controller you want to show in popoverview *******/
popVC.preferredContentSize = CGSizeMake(280,200);
destNav.modalPresentationStyle = UIModalPresentationPopover;
_dateTimePopover8 = destNav.popoverPresentationController;
_dateTimePopover8.delegate = self;
_dateTimePopover8.sourceView = self.view;
// _dateTimePopover8.sourceRect = CGRectMake(0, 64, 70, 44);// CGRectMake(SCREEN_W-20, 64, 70, 44);;//->Here Rect is you want show position
// ->here I got the rightBarButtonItem position and show
CGRect frame = [[self.navigationItem.rightBarButtonItem valueForKey:@"view"] frame];
frame.origin.y = frame.origin.y+10;
frame.origin.x = frame.origin.x+15;
_dateTimePopover8.sourceRect = frame;
destNav.navigationBarHidden = YES;
[self presentViewController:destNav animated:YES completion:nil];
}
- (UIModalPresentationStyle) adaptivePresentationStyleForPresentationController: (UIPresentationController * ) controller {
return UIModalPresentationNone;
}
-(void)hideIOS8PopOver
{
[self dismissViewControllerAnimated:YES completion:nil];
}
希望能帮到你!
我可以通过简单的设置来达到效果:
[self.view setAlpha: 0.0];
[self.popoverPresentationController.containerView setAlpha:0.0];
在popoverviewController的viewWillAppear:
方法中,然后调用
[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.view setAlpha:1.0];
[self.popoverPresentationController.containerView setAlpha:1.0];
} completion:nil];
在 viewDidAppear:
方法中。