苹果缺少关于如何使用在UIPopoverBackgroundView中引入的iOS5类的文档。有人举过例子吗?
我试图对它进行子类化,但是我在Lion上的XCode 4.2缺少了UIPopoverBackgroundView.h
编辑:,毫不奇怪,它应该作为#import <UIKit/UIPopoverBackgroundView.h>导入
发布于 2012-09-07 08:40:14
要添加到另一个,只有链接的答案,这是如何做到这一点。
在您的接口中创建UIPopoverBackgroundView
+(UIEdgeInsets)contentViewInsets;+( CGFloat )arrowHeight;+(CGFloat)arrowBase;@property(非原子,ReadW区)CGFloat arrowOffset;@property(非原子,ReadW区) UIPopoverArrowDirection UIPopoverArrowDirection类方法非常简单:contentViewInsets返回边框的宽度(不包括箭头),arrowHeight是箭头的高度,arrowBase是箭头的基础。[self setNeedsLayout].
layoutSubviews。在这里,根据arrowDirection和arrowOffset属性,您必须调整背景视图和箭头视图的框架。self.bounds,由arrowHeight嵌入在self中心(根据轴正确)。如果箭头方向不向上,则必须更改图像方向,但我的弹出窗口只会向上,所以我没有执行that.操作
下面是我的Up子类的layoutSubviews方法:
-(void)layoutSubviews
{
if (self.arrowDirection == UIPopoverArrowDirectionUp)
{
CGFloat height = [[self class] arrowHeight];
CGFloat base = [[self class] arrowBase];
self.background.frame = CGRectMake(0, height, self.frame.size.width, self.frame.size.height - height);
self.arrow.frame = CGRectMake(self.frame.size.width * 0.5 + self.arrowOffset - base * 0.5, 1.0, base, height);
[self bringSubviewToFront:self.arrow];
}
}发布于 2015-11-12 23:47:43
另一个链接只有答案,但是定制UIPopoverBackgroundView比您可能意识到的要多,因为可用的文档有限,而且这个github项目有一个完整的工作示例,它节省了我很多时间:https://github.com/GiK/GIKPopoverBackgroundView。
直接进入您自己的项目是非常简单的。最微妙的部分是调整帽内嵌任何定制的图像,您正在使用。我建议在项目中就地进行自定义,因为在将所有的popover方向/方向用例迁移到您自己的项目之前,很容易在模拟器中正确显示所有的弹出方向/方向用例。
https://stackoverflow.com/questions/8205846
复制相似问题