IOS核心图形重绘

时间:2014-10-22 21:22:58

标签: ios button rotation core-graphics

所以当我在用户按下按钮时,我想在核心图形中绘制一些东西。在我的故事板中,我有一个视图和一个按钮。我有一个Cocoa Touch类,它是UIView的子类,View的自定义类设置为这个子类。在这里,我有一个属性用于存储我希望绘图旋转的度数。在' - (void)drawRect:(CGRect)rect'方法中我有

int lineRotate = self.rotationAmount;
UIBezierPath * line = [UIBezierPath bezierPath];
[line moveToPoint:CGPointMake(55.0, 55.0)];
[line addLineToPoint:CGPointMake(55.0, 25.0)];
[line applyTransform:CGAffineTransformMakeTranslation(-55, -55)];
[line applyTransform:CGAffineTransformMakeRotation(lineRotate * M_PI/180)];
[line applyTransform:CGAffineTransformMakeTranslation(55, 55)];
[line setLineWidth: 5.0];
[[UIColor blackColor]setStroke];
[line stroke];

我也有一个公共方法来设置这个rotationAmount。从我的ViewController类中,我导入了我创建的UIView子类。我有一个类的属性,我初始化它等。调用此方法来更改旋转量,然后在按钮的IBAction中的setNeedsDisplay不做任何事情。我需要更改或添加什么才能使按钮正常工作?

2 个答案:

答案 0 :(得分:0)

我猜测问题出在你没有表现出来的代码中。 UIViewController通常不需要初始化UIView的属性。在控制器的方法中,您可以self.view访问视图,但通常不会自己设置。您是在创建第二个视图并修改该视图的rotationAmount而不是self.view吗?

答案 1 :(得分:0)

- (IBAction)actionTapped:(id)sender {
_customView.rotationAmount = 50;
_customView.setNeedsDisplay;
}

确保在调用setNeedsDisplay之前更改rotationAmount。 我按照你在问题中解释的创建了一个项目。我能够旋转线。

The line is rotated 50 degress.