我需要自定义CALayer有一些额外的属性和处理自定义事件(触摸等)但从一开始我实现的基本CALayer不是绘制自己,谁能告诉我我做错了什么?
我有一个
幻方
#import "MagicSquare.h"@implementation MagicSquare-(ID) initWithLayer:(ID)layer { self = [super initWithLayer:layer]; self.bounds = CGRectMake(0,200,200); self.position = CGPointMake(10,10); self.cornerRadius = 100; self.bordercolor = [UIcolor redcolor].CGcolor; self.borderWIDth = 1.5; return self;}- (voID)drawInContext:(CGContextRef)theContext{ NSLog(@"Drawing"); CGMutablePathref thePath = CGPathCreateMutable(); CGPathMovetoPoint(thePath,NulL,15.0f,15.f); CGPathAddCurvetoPoint(thePath,15.f,250.0f,295.0f,15.0f); CGContextBeginPath(theContext); CGContextAddpath(theContext,thePath ); CGContextSetlinewidth(theContext,1.0); CGContextSetstrokecolorWithcolor(theContext,[UIcolor redcolor].CGcolor); CGContextstrokePath(theContext); CFRelease(thePath);}
这就是我试图让它在主控制器上绘制的方式
@implementation BIDVIEwController- (voID)vIEwDIDLoad{ [super vIEwDIDLoad]; // Do any additional setup after loading the vIEw,typically from a nib. MagicSquare *layer = [[MagicSquare alloc] initWithLayer:[CALayer layer]]; [self.vIEw.layer addSublayer:layer];}解决方法 发现了问题.
我需要在图层上调用setNeedsdisplay,因为它不会自动绘制自己:
- (voID)vIEwDIDLoad{ [super vIEwDIDLoad]; // Do any additional setup after loading the vIEw,typically from a nib. MagicSquare *layer = [[MagicSquare alloc] initWithLayer:[CALayer layer]]; [self.vIEw.layer addSublayer:layer]; [layer setNeedsdisplay];}总结
以上是内存溢出为你收集整理的ios – 创建自定义CALayer实现全部内容,希望文章能够帮你解决ios – 创建自定义CALayer实现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)