ios - 当前点的图像大于其余点的自定义页面控件不起作用

标签 ios swift xcode

我使用过一些以前的解决方案。来自 stackoverflow 的以下代码会有所帮助,但当前点不会显示比其余点大(尽管名为:“currentPageDot”的图像大于 UIImage(名为:“defaultPageDot”))。而且我不想在它们变大的时候扰乱它们的位置。我应该如何修改此代码以执行相同的操作。

它的外观:

How it looks

它应该是什么样子:

How it should look

import Foundation
import UIKit

class EnhancedPageControl: UIPageControl {

    let activeImage:UIImage = UIImage(named: "currentPageDot")!
    let inactiveImage:UIImage = UIImage(named: "defaultPageDot")!

    override func awakeFromNib() {
        super.awakeFromNib()

        self.pageIndicatorTintColor = UIColor.clear
        self.currentPageIndicatorTintColor = UIColor.clear
        self.clipsToBounds = false
    }

    func updateDots() {
        var i = 0
        for view in self.subviews {
            if let imageView = self.imageForSubview(view) {
                if i == self.currentPage {
                    imageView.image = nil
                    imageView.image = self.activeImage
                } else {
                    imageView.image = nil
                    imageView.image = self.inactiveImage
                }
                i = i + 1
            } else {
                var dotImage = self.inactiveImage
                if i == self.currentPage {
                    dotImage = self.activeImage
                }
                view.clipsToBounds = false
                view.addSubview(UIImageView(image:dotImage))
                i = i + 1
            }
        }
    }

    fileprivate func imageForSubview(_ view:UIView) -> UIImageView? {
        var dot:UIImageView?

        if let dotImageView = view as? UIImageView {
            dot = dotImageView
        } else {
            for foundView in view.subviews {
                if let imageView = foundView as? UIImageView {
                    dot = imageView
                    break
                }
            }
        }

        return dot
    }
}

最佳答案

尝试不更改图像,而是使用页面控制 subview 上的变换属性。像这样的事情

 pageControl.subviews[pageControl.currentPage].transform = CGAffineTransform(scaleX: 1.5, y: 1.5)

关于ios - 当前点的图像大于其余点的自定义页面控件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52164907/

相关文章:

iphone - 使用 CLLocationManager 获取准确位置

ios - 使用蓝牙麦克风的 Swift installTap 产生 "chipmunk"音频

json - 如何获取json大括号内的数据? swift

Xcode 4.3.2 显示隐藏文件

ios - NSMutableDictionary:发送到不可变对象(immutable对象)的变异方法

ios - Xcode 8.2 更新后无效的二进制文件

ios - '在 "null"中打开此页面' 在 iOS9 和 Swift 2 升级后从 FacebookSDK 登录出现的模态

json - Swift 4 Json 解析

ios - UINavigationController 对底下的 UITableView 透明

ios - 快速检测按下的返回键而不使用 textFieldDidEndEditing