我有一个UIControl
子类,我实现了drawRect
。我正在尝试使用drawRect
在UIBezierPath
方法内绘制一个矩形。正在调用所有适当的方法,没有任何内容为null,应用程序运行时没有任何问题。问题是,只绘制了框架。意思是,我可以看到框架的区域,因为它是黑色的,但我看不到画在框架上的任何东西。
以下是我要实例化类的内容:
ZHButton *button =
[[ZHButton alloc] initWithFrame:CGRectMake(100, 200, 100, 50)];
button.buttonType = NSSelectorFromString(LEFT_ROUNDED_CORNER_BUTTON);
[self.view addSubview:button];
这是drawRect:方法,它使用选择器调用不同的方法:
- (void)drawRect:(CGRect)rect {
UIBezierPath *button = [self performSelector:self.buttonType withObject:nil];
[[UIColor orangeColor] setFill];
[button fill];
}
- (UIBezierPath *)drawButtonWithLeftCornersRounded {
return [UIBezierPath bezierPathWithRoundedRect:self.frame
byRoundingCorners:UIRectCornerTopLeft |
UIRectCornerBottomLeft
cornerRadii:buttonRadii];
}
一切似乎都运转正常,但UIBezierPath
没有被绘制出来。此外,不确定使用选择器是否是最好的方法。有人知道这是怎么回事吗?
答案 0 :(得分:0)
您似乎没有调用drawButtonWithLeftCornersRounded
方法。我认为这一行是错误的:
[self performSelector:self.buttonType withObject:nil];
但它应该是:
[self performSelector:@selector(drawButtonWithLeftCornersRounded) withObject:nil];
希望这有帮助!
答案 1 :(得分:0)
解决了它。在drawButtonWithLeftCornersRounded
bezierPathWithRoundedRect
中不应该是self.frame
。这将导致x和y坐标位于框架内的x,y位置,而不是视图。我将参数更改为:
CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height);