搜索页面的 UIPageControl 点

Posted

技术标签:

【中文标题】搜索页面的 UIPageControl 点【英文标题】:UIPageControl dot for a search page 【发布时间】:2009-11-19 09:08:30 【问题描述】:

有没有什么方法可以为我的第一页添加放大镜图标而不是点,从而允许在 iPhone 上使用我的本机应用程序的 UIPageControl 执行一些搜索?

我试过谷歌,但根本没有找到类似的问题,但它看起来像是 Apple 应用程序中广泛使用的功能。

谁能帮我提个建议?

【问题讨论】:

【参考方案1】:

基本上 UIPageControl 有一个 _indicators 数组,其中包含每个点的 UIView。这个数组是一个私有属性,所以你不应该弄乱它。如果您需要自定义图标,则必须自己实现页面指示器。

编辑:经过更多研究,您似乎可以替换 UIPageControl 子视图来自定义点图像。详情请查看http://www.onidev.com/2009/12/02/customisable-uipagecontrol/。不过,仍然不确定 Apple 评论者对做这种事情会有什么感受。

【讨论】:

感谢您的回答!我希望它不会是这样的:-/ 我已经通过在搜索图标上方的 UIPageControl 添加一个子视图来实现我的目标(不得不花一些时间来找出它的放置算法)。它按需要工作。不管怎样,我不得不向苹果方面表示一点小小的责备,因为它不允许这种开箱即用的定制。 我们已经使用您提供的链接中描述的技术提交了应用程序,没有任何问题。 该链接已失效。您可以在 archive.org 上找到它的旧内容:web.archive.org/web/20120408220415/http://www.onidev.com/2009/…【参考方案2】:

我创建了一个 UIPageControl 子类来轻松合法地实现这一点(无需私有 API)。 基本上,我覆盖了 setNumberOfPages:在最后一个圆圈内插入带有图标的 UIImageView。然后在 setCurrentPage: 方法上,我检测最后一页是否突出显示,以修改 UIImageView 的状态并清除圆圈的背景颜色,因为这将由 UIPageControl 私有 API 自动更新。

这是结果:

这是代码:

@interface EPCPageControl : UIPageControl
@property (nonatomic) UIImage *lastPageImage;
@end

@implementation EPCPageControl

- (void)setNumberOfPages:(NSInteger)pages

    [super setNumberOfPages:pages];

    if (pages > 0) 

        UIView *indicator = [self.subviews lastObject];
        indicator.backgroundColor = [UIColor clearColor];

        if (indicator.subviews.count == 0) 

            UIImageView *icon = [[UIImageView alloc] initWithImage:self.lastPageImage];
            icon.alpha = 0.5;
            icon.tag = 99;

            [indicator addSubview:icon];
        
    


- (void)setCurrentPage:(NSInteger)page

    [super setCurrentPage:page];

    if (self.numberOfPages > 1 && self.lastPageImage) 

        UIView *indicator = [self.subviews lastObject];
        indicator.backgroundColor = [UIColor clearColor];

        UIImageView *icon = (UIImageView *)[indicator viewWithTag:99];
        icon.alpha = (page > 1 && page == self.numberOfPages-1) ? 1.0 : 0.5;
    

【讨论】:

谢谢。这对我帮助很大。我发现它比其他方法更干净!

以上是关于搜索页面的 UIPageControl 点的主要内容,如果未能解决你的问题,请参考以下文章

当前页面的UIPageControl点大小[重复]

UIpageControl 指示点

基于 iOS 页面的模板,关于点的 UIPageViewController 和 UIPageControl 颜色

UIPageControl 指示点在页面更改时不会更改

如何以不同的方式设置 UIPageControl 的当前页面指示点的样式?

Swift UIPageControl 不显示点