IOS核心图形重绘
Posted
技术标签:
【中文标题】IOS核心图形重绘【英文标题】:IOS Core Graphics redrawing 【发布时间】:2014-10-22 21:22:57 【问题描述】:所以我在核心图形中绘制了一些我想在用户按下按钮时旋转的东西。在我的故事板中,我有一个视图和一个按钮。我有一个子类 UIView 的 Cocoa Touch 类,并且 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 不会执行任何操作。我需要更改或添加什么才能使按钮正常工作?
【问题讨论】:
【参考方案1】:我猜问题出在您没有显示的代码中。 UIViewController
通常不需要初始化UIView
的属性。在控制器的方法中,可以self.view
访问视图,但一般不用自己设置。您是否正在创建第二个视图并修改该视图的rotationAmount
,而不是self.view
?
【讨论】:
【参考方案2】:- (IBAction)actionTapped:(id)sender
_customView.rotationAmount = 50;
_customView.setNeedsDisplay;
确保在调用 setNeedsDisplay 之前更改了 rotationAmount。 正如您在问题中解释的那样,我创建了一个项目。而且我可以旋转这条线。
【讨论】:
以上是关于IOS核心图形重绘的主要内容,如果未能解决你的问题,请参考以下文章