Apple缺少有关如何使用iOS5中引入的UIPopoverBackgroundView
类的文档。有人有例子吗?
我试图将其子类化,但我在Lion上的XCode 4.2缺少UIPopoverBackgroundView.h
编辑: 不出所料,它本应导入为#import <UIKit/UIPopoverBackgroundView.h>
答案 0 :(得分:13)
要添加到另一个,仅限链接的答案,以下是这样做的方法。
在您的界面中声明以下内容:
+(UIEdgeInsets)contentViewInsets;
+(CGFloat)arrowHeight;
+(CGFloat)arrowBase;
@property(nonatomic,readwrite) CGFloat arrowOffset;
@property(nonatomic,readwrite) UIPopoverArrowDirection arrowDirection;
类方法很简单:contentViewInsets
一直返回边框的宽度(不包括箭头),arrowHeight
是箭头的高度,{{1} }是你的箭头的基础。
arrowBase
。 [self setNeedsLayout]
。在此处,根据layoutSubviews
和arrowDirection
属性,您必须调整背景视图和箭头视图的帧。
arrowOffset
,由self.bounds
插入箭头所在的任何边缘arrowHeight
的中心arrowOffset
(根据轴校正)。如果箭头方向不对,你必须改变图像方向,但我的弹出窗口只会向上,所以我没有这样做。以下是我的Up-only子类的self
方法:
layoutSubviews
答案 1 :(得分:1)
另一个链接只回答,但是定制UIPopoverBackgroundView
比你可能意识到的更多的工作,因为可用的文档有限,这个github项目有一个完整的工作示例,为我节省了大量时间:https://github.com/GiK/GIKPopoverBackgroundView < / p>
投入自己的项目相当简单。最琐碎的部分是为您使用的任何自定义图像调整上限。我建议您在项目中现场进行自定义,并且在将其迁移到您自己的项目之前,可以轻松验证所有弹出方向/方向用例在模拟器中正确显示。