Swift: 巧改UIPageControl的默认图片

  • O__O “… 设计师给的设计图总是那么的不可思议,这次的UIPageControl的小点点整成了方形其他颜色,而默认的小点点则为圆形。被稍稍恶心了一下之后,还得默默地去实现。最近在研究runtime机制,就想看看UIPageControl都有哪些隐藏属性,结果发现了_pageImage_currentPageImage,试了下果然可以!不过要注意判断是否包含此属性,以防系统更新之后给去掉了,那就会造成崩溃,而崩溃是程序员容忍不了的!

    // 初始化一个属性列表数组
    var ivarName_pageControl: [String] = []
    
    var count: uint = 0
    // 获取属性列表
    let list = class_copyIvarList(UIPageControl.classForCoder(), &count)
    
    for index in 0 ... count-1 {
        // 获取属性名称,ivar_getTypeEncoding 可获取属性类型
        let ivarName = ivar_getName( list?[ Int(index) ] )
        let name = String.init(cString: ivarName!)
        ivarName_pageControl.append(name)
    }
    
    // 判断是否包含这两个属性
    if ivarName_pageControl.contains("_pageImage") && ivarName_pageControl.contains("_currentPageImage")
    {
        lifeServicePageControl.setValue(UIImage.init(named: "首页_首页_PageControl_Normal"), forKey: "_pageImage")
        lifeServicePageControl.setValue(UIImage.init(named: "首页_首页_PageControl_Current"), forKey: "_currentPageImage")
    }
    
  • done。

你可能感兴趣的:(从零开始学Swift,iphone学习)