【问题标题】:UIView drawRect Method with options带有选项的 UIView drawRect 方法
【发布时间】:2012-07-30 21:13:42
【问题描述】:

我想创建一个UIView Class,您可以使用多个选项对其进行初始化。

我认为问题在于drawRect() 方法。是否可以使用某个选项来初始化类,例如

[[MyUIView alloc]initWithColor:[UIColor blueColor]]

我读到我不应该在没有初始化对象的情况下调用drawRect() 方法。

那么如何在不手动调用的情况下实现上面的语句呢?

到目前为止我所尝试的:

我以为我可以只初始化视图,然后调用方法

[MyView changeColorTo:green]

它试图重绘视图但我无法让它工作。

也许我在drawRect() 方法中用coreGraphics(具有某种颜色,应该可以选择)绘制圆角矩形很重要。

如何实现我想要的行为?

【问题讨论】:

    标签: iphone ios uiview core-graphics


    【解决方案1】:

    打电话

    [self setNeedsDisplayInRect:aCGRect];
    

    为你调用 drawRect:。

    编辑颜色属性:

    @interface MyView: UIView
    
    @property (nonatomic, strong) UIColor *drawColor;
    
    @end
    
    @implementation MyView
    
    @synthesize drawColor;
    
    - (id)initWithWhatever
    {
        self.drawColor = [UIColor infraRedColor];
        [self setNeedsDisplayInRect:aRect];
    }
    
    - (void)drawRect:(CGRect)r
    {
        // use self.drawColor
    }
    
    @end
    

    【讨论】:

    • 如果我这样做,它将绘制默认矩形。如何向该调用添加选项。
    • 嗯,这可能是一个愚蠢的问题,但是如果我使用 CGRect 进行 setNeedsDisplay,如何添加类似颜色的选项?
    • @AzzUrr1 向视图添加一个属性,然后在调用 setNeedsDisplayWithRect: 之前设置它:并在 drawRect 中检查它。
    • 我不确定我是否完全理解,但我会尝试一下
    • 查看编辑,下次请发展一点算法思维。这应该是显而易见的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2017-01-03
    相关资源
    最近更新 更多