Ios 使用UIPopoOverBackgroundView类
苹果缺少关于如何使用iOS5中引入的Ios 使用UIPopoOverBackgroundView类,ios,ios5,uipopoverbackgroundview,Ios,Ios5,Uipopoverbackgroundview,苹果缺少关于如何使用iOS5中引入的uipopopoverbackgroundview类的文档。有人举个例子吗 我已经尝试对它进行子类化,但是我在Lion上的XCode 4.2缺少uipopoOverBackgroundView.h 编辑:毫不奇怪,它应该作为#import导入到另一个仅链接的答案中,这是如何做到的 创建UIPopoOverBackgroundView的新子类 在界面中声明以下内容: +(UIEdgeInsets)contentViewInsets; +(CGFloat)arr
uipopopoverbackgroundview
类的文档。有人举个例子吗
我已经尝试对它进行子类化,但是我在Lion上的XCode 4.2缺少uipopoOverBackgroundView.h
编辑:毫不奇怪,它应该作为
#import
导入到另一个仅链接的答案中,这是如何做到的
- 创建UIPopoOverBackgroundView的新子类
- 在界面中声明以下内容:
+(UIEdgeInsets)contentViewInsets; +(CGFloat)arrowHeight; +(CGFloat)arrowBase; @property(nonatomic,readwrite) CGFloat arrowOffset; @property(nonatomic,readwrite) UIPopoverArrowDirection arrowDirection;
- 类方法很简单:
返回整个边框的宽度(不包括箭头),contentViewInsets
是箭头的高度,arrowHeight
是箭头的底部arrowBase
- 实现两个属性设置器,确保调用
李>[self-setNeedsLayout]
- 在初始化方法中,创建两个图像视图,一个包含箭头(应为类方法中箭头尺寸的大小),另一个包含背景图像(必须是可调整大小的图像),并将它们添加为子视图。此时将子视图放置在何处并不重要,因为没有箭头方向或偏移。您应该确保箭头图像视图位于背景图像视图的上方,以便它正确地混合在一起李>
- 实现
。在这里,根据布局子视图
和箭头方向
属性,您必须调整背景视图和箭头视图的帧。箭头偏移
- 背景视图的框架应为
,在箭头所在的任何边上插入self.bounds
arrowHeight
- 箭头视图的框架应对齐,以使中心偏离
自身的
中心
(根据轴进行校正)。如果箭头方向不向上,则必须更改图像方向,但我的popover只能向上,所以我没有这样做
- 背景视图的框架应为
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];
}
}
另一个只提供链接的答案是,鉴于可用的文档有限,定制
UIPopoOverBackgroundView
的工作可能比您意识到的要多,而且这个github项目有一个完整的工作示例,为我节省了大量时间:
直接进入您自己的项目是相当简单的。最精细的部分是根据您使用的任何自定义图像调整cap插图。我建议您在项目中就地进行定制,因为在将其迁移到您自己的项目中之前,很容易验证所有popover方向/方向用例在模拟器中是否正确显示。您确定找不到文档吗?:CodaFI已经回答了有关文档的问题…其他主题是此示例,幸运的是,您可能使用了错误的SDK?感谢#导入:)