带有选项的 UIView drawRect 方法
Posted
技术标签:
【中文标题】带有选项的 UIView drawRect 方法【英文标题】:UIView drawRect Method with options 【发布时间】:2012-07-30 21:13:42 【问题描述】:我想创建一个UIView Class,您可以使用多个选项对其进行初始化。
我认为问题在于drawRect()
方法。是否可以使用某个选项来初始化类,例如
[[MyUIView alloc]initWithColor:[UIColor blueColor]]
我读到我不应该在没有初始化对象的情况下调用drawRect()
方法。
那么如何在不手动调用的情况下实现上面的语句呢?
到目前为止我所尝试的:
我以为我可以只初始化视图,然后调用方法
[MyView changeColorTo:green]
它试图重绘视图但我无法让它工作。
也许我在drawRect()
方法中用coreGraphics
(具有某种颜色,应该可以选择)绘制圆角矩形很重要。
如何实现我想要的行为?
【问题讨论】:
【参考方案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 中检查它。 我不确定我是否完全理解,但我会尝试一下 查看编辑,下次请发展一点算法思维。这应该是显而易见的:)以上是关于带有选项的 UIView drawRect 方法的主要内容,如果未能解决你的问题,请参考以下文章