iPhone Popover Above iOS9

直接上图上代码。。。

OTPopoverMenuViewController.h:

1
2
3
4
5
6
7
8
9
10
@interface OTPopoverMenuViewController : UIViewController

- (void)presentInController:(UIViewController *)controller
                 sourceView:(UIView *)view;

- (void)presentInController:(UIViewController *)controller
              barButtonItem:(UIBarButtonItem *)barButtonItem;


@end

OTPopoverMenuViewController.m:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#import "OTPopoverMenuViewController.h"

@interface OTPopoverMenuViewController () <UIPopoverPresentationControllerDelegate>

@end

@implementation OTPopoverMenuViewController

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        self.modalPresentationStyle = UIModalPresentationPopover;

        UIPopoverPresentationController *popController = [self popoverPresentationController];
        self.preferredContentSize = CGSizeMake(100, 100);
        popController.permittedArrowDirections = UIPopoverArrowDirectionUp;
        popController.delegate = self;

        [self initUI];
    }
    return self;
}

- (void)presentInController:(UIViewController *)controller
                 sourceView:(UIView *)view
{
    UIPopoverPresentationController *popController = [self popoverPresentationController];
    popController.sourceView = view;
    popController.sourceRect = view.bounds;
    [controller presentViewController:self animated:YES completion:nil];
}

- (void)presentInController:(UIViewController *)controller
              barButtonItem:(UIBarButtonItem *)barButtonItem
{
    UIPopoverPresentationController *popController = [self popoverPresentationController];
    popController.barButtonItem = barButtonItem;
    [controller presentViewController:self animated:YES completion:nil];
}

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
{
    return UIModalPresentationNone;
}

- (void)initUI
{

}

@end

调用:

1
2
3
4
OTPopoverMenuViewController *controller = [[OTPopoverMenuViewController alloc] init];
[controller presentInController:self sourceView:view];
//或
[controller presentInController:self barButtonItem:barButtonItem];

Over

Comments