首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UIPopoverBackgroundView类

使用UIPopoverBackgroundView类
EN

Stack Overflow用户
提问于 2011-11-20 23:59:28
回答 2查看 12.3K关注 0票数 11

苹果缺少关于如何使用在UIPopoverBackgroundView中引入的iOS5类的文档。有人举过例子吗?

我试图对它进行子类化,但是我在Lion上的XCode 4.2缺少了UIPopoverBackgroundView.h

编辑:,毫不奇怪,它应该作为#import <UIKit/UIPopoverBackgroundView.h>导入

EN

回答 2

Stack Overflow用户

发布于 2012-09-07 08:40:14

要添加到另一个,只有链接的答案,这是如何做到这一点。

在您的接口中创建UIPopoverBackgroundView

  • Declare的新子类
  • 如下:

+(UIEdgeInsets)contentViewInsets;+( CGFloat )arrowHeight;+(CGFloat)arrowBase;@property(非原子,ReadW区)CGFloat arrowOffset;@property(非原子,ReadW区) UIPopoverArrowDirection UIPopoverArrowDirection类方法非常简单:contentViewInsets返回边框的宽度(不包括箭头),arrowHeight是箭头的高度,arrowBase是箭头的基础。[self setNeedsLayout].

  • 实现了两个属性设置器,确保调用

  • 在初始化方法中,创建两个图像视图,一个保存箭头(应该是类方法中箭头尺寸的大小),另一个保存背景图像(必须是可调整大小的图像),并将它们添加为子视图。在这里放置子视图并不重要,因为您没有箭头方向或偏移量。您应该确保箭头图像视图位于背景图像视图的上方,这样它才能正确地融入其中。

  • 实现了layoutSubviews。在这里,根据arrowDirectionarrowOffset属性,您必须调整背景视图和箭头视图的框架。
  • 您的背景视图的框架应该是self.bounds,由arrowHeight嵌入在
  • 上箭头的任何边缘,箭头视图的框架应该对齐,以便中心远离self中心(根据轴正确)。如果箭头方向不向上,则必须更改图像方向,但我的弹出窗口只会向上,所以我没有执行that.

操作

下面是我的Up子类的layoutSubviews方法:

代码语言:javascript
复制
-(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];

    }
}
票数 14
EN

Stack Overflow用户

发布于 2015-11-12 23:47:43

另一个链接只有答案,但是定制UIPopoverBackgroundView比您可能意识到的要多,因为可用的文档有限,而且这个github项目有一个完整的工作示例,它节省了我很多时间:https://github.com/GiK/GIKPopoverBackgroundView

直接进入您自己的项目是非常简单的。最微妙的部分是调整帽内嵌任何定制的图像,您正在使用。我建议在项目中就地进行自定义,因为在将所有的popover方向/方向用例迁移到您自己的项目之前,很容易在模拟器中正确显示所有的弹出方向/方向用例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8205846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档