标签: uipopoverbackgroundview

更改UIPopoverView背景+箭头颜色

有没有办法在iOS8 上简单地更改UIPopoverView背景颜色(包括它的箭头)?

(我确实阅读了几篇关于自定义"UIPopoverControllers"的文章.这是否也适用于此,意味着答案是"不"?)

在此输入图像描述

这不是我应该能够在prepareForSegue方法中触发弹出窗口的东西吗?我怎样才能达到相应的视图来改变它的外观?

uiview ios uipopoverbackgroundview swift ios8

28
推荐指数
3
解决办法
1万
查看次数

使用UIPopoverBackgroundView类

Apple缺少有关如何使用UIPopoverBackgroundViewiOS5中引入的类的文档.有人有例子吗?

我试图将其子类化,但我的Lion上的XCode 4.2缺失了 UIPopoverBackgroundView.h

编辑:不出所料,它应该被导入为#import <UIKit/UIPopoverBackgroundView.h>

ios ios5 uipopoverbackgroundview

10
推荐指数
1
解决办法
1万
查看次数

没有圆角的UIPopoverBackgroundView

我通过继承UIPopoverBackgroundView来制作自定义popover背景.我想制作没有圆角的弹出窗口.我可以成功创建没有圆角的背景(图片中的红色),但似乎UIPopoverController在弹出框的内容中添加了一些圆角掩模(绿色图片).这是我的popover角落的图片:

在此输入图像描述

我有什么想法可以克服它吗?

objective-c uipopovercontroller ios uipopoverbackgroundview

7
推荐指数
1
解决办法
4785
查看次数

UIPopoverController backgroundColor在显示时导致flash

我在我的应用程序中使用新的(在iOS 7中)UIPopoverController.backgroundColor设置来根据需要更改我的弹出窗口的颜色,但我发现使用此设置会在我打开我的时候导致颜色更改的"闪烁"弹出窗口 - 在大约半秒钟内从默认的半透明白色开始,逐渐消失到我选择的颜色.这是不希望的; 它应该只是我打开它时设置的颜色.

文件说明:

使用此属性可自定义弹出窗口的背景颜色.在弹出窗口可见时更改此属性的值会触发动画切换到新颜色.此属性的默认值为nil,对应于默认背景颜色.

但是,即使我在我的应用程序打开时设置它并且不再设置它,每次打开任何弹出窗口时它仍会闪烁.

我愿意使用UIPopoverBackgroundView,但我不确定它是否允许我即时更改背景颜色,因为它似乎是一个静态解决方案,只需更改应用程序中所有弹出窗口的样式.在此先感谢您的任何建议.

编辑(代码):

当我的主视图控制器被加载并准备其余的UI(这是许多popover inits之一):

fileOptionsController = [[FileOptionsViewController alloc] initWithNibName:@"FileOptionsViewController" bundle:nil];
fileOptionsController.delegate = self;

self.fileOptionsPopoverController = [[UIPopoverController alloc] initWithContentViewController:fileOptionsController];
[popoverControllers addObject:self.fileOptionsPopoverController];
Run Code Online (Sandbox Code Playgroud)

在我的popovers初始化之后,我正在运行它(仍然在主init代码中),目的是在设置backgroundColor和交互之间进行长时间延迟测试(注意:更改alpha没有任何效果,当设置为1时仍然会发生):

for (UIPopoverController *po in popoverControllers) {
    [po setBackgroundColor:[UIColor colorWithWhite:0.3f alpha:0.90f]];
}
Run Code Online (Sandbox Code Playgroud)

然后,当用户点击按钮以显示弹出框时,会调用此方法:

- (void)showPopover:(UIPopoverController *)popover from:(UIButton *)btn {
    [popover presentPopoverFromRect:CGRectMake(btn.frame.origin.x + 5.0f, btn.frame.origin.y - 1.0f, btn.frame.size.width, btn.frame.size.height) inView:btn.superview permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

挺直的.这些是访问此弹出窗口或任何弹出窗口的唯一相关位置,除非在已经显示的情况下将其解除.

uipopovercontroller uipopoverbackgroundview ios7

6
推荐指数
1
解决办法
2521
查看次数

UIPopoverBackgroundView contentViewInsets必须由子类实现

我正在实现一个自定义的PopoverBackgroundView,并且在Swift文档中指定我必须实现如下方法:

class SettingsPopoverBackgroundView: UIPopoverBackgroundView {

override var arrowOffset: CGFloat {
    get {
        return 0.0
    }
    set {
        super.arrowOffset = newValue
    }

}

override var arrowDirection: UIPopoverArrowDirection {
    get {
        return UIPopoverArrowDirection.Up
    }
    set {
        super.arrowDirection = newValue
    }
}

func contentViewInsets() -> UIEdgeInsets {
    return UIEdgeInsetsMake(10, 10, 10, 10)
}

func arrowBase() -> CGFloat {
    return 2.0
}

func arrowHeight() -> CGFloat {
    return 2.0
}
}
Run Code Online (Sandbox Code Playgroud)

但是,我仍然收到错误:

UIPopoverBackgroundView contentViewInsets必须由子类实现.

对于这个子类化,似乎Apple有一些乱码异常,这里可以看到,因为我确实实现了contentViewInsets,但仍然得到了错误.

这就是我在prepareForSegue方法中将后台类设置为popover的方法:

popover.popoverBackgroundViewClass = SettingsPopoverBackgroundView.self
Run Code Online (Sandbox Code Playgroud)

这样对吗? …

ios uipopoverbackgroundview swift

6
推荐指数
1
解决办法
2023
查看次数

如何将灰色背景添加到自定义UIPopoverBackgroundView

我通过继承UIPopoverBackgroundView(使用本教程)并使用UIPopoverController呈现它来制作自定义弹出窗口.不幸的是,只要我指定自定义popoverBackgroundViewClass,原生的灰色背景就会消失.使用自定义UIPopoverBackgroundView时,有没有办法让灰色背景变暗?我可以用来模拟本机行为的任何其他解决方案?

objective-c uipopovercontroller uipopoverbackgroundview

5
推荐指数
2
解决办法
2306
查看次数

如何在不绘制自己的情况下更改UIPopoverPresentationController的箭头颜色

我想更改UIPopoverPresentationController用于指向其源的箭头的颜色.我能看到这样做的唯一方法是自己子类化UIPopoverBackgroundView并编写drawRect和绘制popover边框和箭头.这是一种痛苦,因为默认的弹出窗口中有一些细节,比如一切都是圆角.而且我希望尽可能让它在平台上感受到家的感觉.

我是否真的必须绘制自己的弹出箭头才能改变箭头的颜色?

更新:我试过设置backgroundColorUIPopoverPresentationController,但它似乎改变无处不在的箭头可能绘制颜色.我以前看过它的工作原理,但我无法确定是什么让它起作用.查看将颜色设置为红色的屏幕截图.蓝色是弹出窗口中导航控制器的内容.它应该指向按钮.

Popover背景颜色问题

uipopovercontroller ios uipopoverbackgroundview

3
推荐指数
1
解决办法
2485
查看次数