如何在执行自定义绘图的类方法中访问类的外观代理?

Posted

技术标签:

【中文标题】如何在执行自定义绘图的类方法中访问类的外观代理?【英文标题】:How can I access a class's appearance proxy in a class method which performs custom drawing? 【发布时间】:2013-10-02 01:09:26 【问题描述】:

我在 UIView 子类的外观代理上设置了“tintColor”属性,该子类可以使用 CAShapeLayer 和 UIBezierPath 绘制 5 种不同形状之一。我正在使用类方法返回 UIView 所需的形状:

+(CustomView*)viewForType:(CustomViewType)type

    CustomView* iV = [[CustomView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];

    switch (type)
    
        case CustomViewTypeOne:
    
        iV.shapeLayer = [CAShapeLayer layerWithPath:[self typeOneBezierPath]
                                              color:[UIColor whiteColor]];
        break;
    
    ...

    return iV;

如何将我在外观代理上设置的“tintColor”属性传递给此方法?

编辑:值得一提的是,并非所有返回的视图都是相同的,其中一些包含一个形状图层,而另一些可能包含多个图层并使用遮罩。

【问题讨论】:

【参考方案1】:

您需要将 tint color 属性传递给此方法吗?如果您将色调颜色设置为CustomView 类的外观,您可以轻松获取色调颜色,使用

UIColor *tintColor = [[CustomView appearance] tintColor];

【讨论】:

以上是关于如何在执行自定义绘图的类方法中访问类的外观代理?的主要内容,如果未能解决你的问题,请参考以下文章

代理 适配 外观

适配器模式和代理模式的区别

Java Review(三十九类加载机制与反射)

Java Review(三十九类加载机制与反射)

代理模式(Proxy)

对象的继承访问控制