gpt4 book ai didi

ios - iOS7 和 iOS8 中的全屏自定义 Popover 问题

转载 作者:行者123 更新时间:2023-11-29 02:30:08 24 4
gpt4 key购买 nike

我正在开发一个仅适用于 iPad 的应用程序。其中一个功能我想显示FullCustom Popover

为此,我的代码如下:-

DuplicateViewController *viewControllerForPopover =
[self.storyboard instantiateViewControllerWithIdentifier:@"DuplicatePopoverVC"];
viewControllerForPopover.arr_studentDetail = self.arrStudentDetail;
viewControllerForPopover.dictSelectedProg = dictSelectedProgram;

self.popover = [[UIPopoverController alloc]
initWithContentViewController:viewControllerForPopover];
[self.popover setPopoverContentSize:CGSizeMake(self.view.frame.size.width, self.view.frame.size.height)];

viewControllerForPopover.modalPresentationStyle = UIModalPresentationFullScreen;
[self.popover setBackgroundColor:[[UIColor darkGrayColor] colorWithAlphaComponent:0.4]];
[self.popover presentPopoverFromRect:self.view.bounds inView:self.view permittedArrowDirections:0 animated:YES];

我设置了弹出窗口大小并尝试了其他选项,但无法全屏显示。

ViewDidLoad -> DuplicateViewController

[view_main.layer setBorderWidth:5.0f];
[view_main.layer setCornerRadius:25.0f];
[view_main.layer setBorderColor:[UIColor colorWithRed:(29.0f/255.0f) green:134.0f/255.0f blue:140.0f/255.0f alpha:1.0f].CGColor];

但是运行App时,显示如下:-

enter image description here

请帮助我显示全屏 Popover。非常感谢您。

最佳答案

创建两个类第一个应该继承 UIPopoverController第二个应该继承UIPopoverBackgroundView

例如:

CustomUIPopoverController.h

@interface CustomUIPopoverController : UIPopoverController

CustomUIPopoverController.m

@implementation CustomUIPopoverController

- (id)initWithContentViewController:(UIViewController *)viewController {
self = [super initWithContentViewController:viewController];
if (self) {
self.popoverBackgroundViewClass = [CustomUIClearPopoverBackgroundView class];
[self setPopoverContentSize:viewController.view.frame.size];
}
return self;
}

@结束

CustomUIClearPopoverBackgroundView.h

@interface CustomUIClearPopoverBackgroundView : UIPopoverBackgroundView

CustomUIClearPopoverBackgroundView.m

#import "CustomUIClearPopoverBackgroundView.h"

@implementation CustomUIClearPopoverBackgroundView

#pragma mark - no arrow

+ (CGFloat)arrowHeight {
return 0;
}

+ (CGFloat)arrowBase {
return 0;
}

- (CGFloat)arrowOffset {
return 0;
}

- (void)setArrowOffset:(CGFloat)arrowOffset {

}

- (UIPopoverArrowDirection)arrowDirection {
return 0;
}

- (void)setArrowDirection:(UIPopoverArrowDirection)arrowDirection {
}


#pragma mark - no margins

+ (UIEdgeInsets)contentViewInsets {
return UIEdgeInsetsZero;
}

#pragma mark - fully transparent (default is 0.15)

+(BOOL)wantsDefaultContentAppearance {

return NO;
}

- (void)willMoveToWindow:(UIWindow *)newWindow {
[super willMoveToWindow:newWindow];

// hide shadow image view
[self.superview.subviews[0] setHidden:YES];
}
@end

我用过这个,但我不太喜欢它。第二个选项是创建一个容器 View 并根据需要隐藏/显示它。这样它就是一个纯粹的 View Controller ,你不需要搞乱弹出的东西要创建透明度,请使容器 View 背景 = 清晰, View Controller View 背景颜色 = 清晰,并在 View Controller 的大小中添加一个半透明按钮以实现半透明黑色背景。单击按钮关闭窗口(=与点击弹出背景效果相同)

关于ios - iOS7 和 iOS8 中的全屏自定义 Popover 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27012751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com