苹果缺少有关如何使用iOS5中引入的UIPopoverBackgroundView
类的文档。有人举个例子吗?
我试图对其进行子类化,但是我在Lion上的XCode 4.2缺少UIPopoverBackgroundView.h
编辑:毫不奇怪,它应该已经作为#import <UIKit/UIPopoverBackgroundView.h>
导入了
最佳答案
要添加其他仅链接的答案,请按以下步骤进行。
+(UIEdgeInsets)contentViewInsets;
+(CGFloat)arrowHeight;
+(CGFloat)arrowBase;
@property(nonatomic,readwrite) CGFloat arrowOffset;
@property(nonatomic,readwrite) UIPopoverArrowDirection arrowDirection;
contentViewInsets
返回边框的整个宽度(不包括箭头),arrowHeight
是箭头的高度,arrowBase
是箭头的底部。 [self setNeedsLayout]
。 layoutSubviews
。在这里,根据arrowDirection
和arrowOffset
属性,您必须调整背景 View 和箭头 View 的框架。self.bounds
,由arrowHeight
在arrowOffset
的中心距self
的中心(根据轴正确)。如果箭头方向不是向上,则必须更改图像方向,但是我的弹出框只会向上,因此我没有这样做。 这是我的Up-only子类的
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];
}
}
关于ios - 使用UIPopoverBackgroundView类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8205846/