直接上图上代码。。。

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