如何在iPhone应用程序中创建popover?

Xtr*_*ian 14 iphone popover ios

我正在寻找iPhone的popover,我想让它像iOS 5 Reader功能:

在此输入图像描述

经过一些研究后我发现了WEPopover和FPPopover,但我在寻找是否有类似这个API的内置iphone SDK.

Ale*_*izi 26

您可以UIView使用一些自定义图稿制作一个自定义图稿并在视图顶部显示动画作为"弹出窗口",其中包含一些按钮,如下所示:

UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(25, 25, 100, 50)]; //<- change to where you want it to show.

//Set the customView properties
customView.alpha = 0.0;
customView.layer.cornerRadius = 5;
customView.layer.borderWidth = 1.5f;
customView.layer.masksToBounds = YES;

//Add the customView to the current view
[self.view addSubview:customView];

//Display the customView with animation
[UIView animateWithDuration:0.4 animations:^{
    [customView setAlpha:1.0];
} completion:^(BOOL finished) {}];
Run Code Online (Sandbox Code Playgroud)

别忘了#import <QuartzCore/QuartzCore.h>,如果你想使用的话customView.layer.

  • @AleksanderAzizi:在你创建的'popover'视图的左上角创建三角形的代码在哪里? (8认同)

Sob*_*man 13

从iOS8开始,我们现在可以创建弹出窗口,在iPhone上也是如此,就像在iPad上一样,对于那些制作通用应用程序的人来说尤其如此,因此无需制作单独的视图或代码.

你可以在这里获得课程和演示项目:https://github.com/soberman/ARSPopover

您需要做的只是子类UIViewController,符合UIPopoverPresentationControllerDelegate协议并设置所需modalPresentationStyledelegate值以及值:

// This is your CustomPopoverController.m

@interface CustomPopoverController () <UIPopoverPresentationControllerDelegate>

@end

@implementation CustomPopoverController.m

- (instancetype)init {
    if (self = [super init]) {
        self.modalPresentationStyle = UIModalPresentationPopover;
        self.popoverPresentationController.delegate = self;
    }
    return self;
}

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
    return UIModalPresentationNone; //You have to specify this particular value in order to make it work on iPhone.
}
Run Code Online (Sandbox Code Playgroud)

此后,实例化从要显示它并分配两个值的方法新创建的子类sourceViewsourceRect.它看起来像这样:

CustomPopoverController *popoverController = [[CustomPopoverController alloc] init];
popoverController.popoverPresentationController.sourceView = sourceView; //The view containing the anchor rectangle for the popover.
popoverController.popoverPresentationController.sourceRect = CGRectMake(384, 40, 0, 0); //The rectangle in the specified view in which to anchor the popover.
[self presentViewController:popoverController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

而且你有它,漂亮,整洁模糊的popover.