【发布时间】:2012-12-18 21:12:44
【问题描述】:
在下面的方法中,我只是放大了一堆CAShapeLayers,它们使用CATransform3DMakeScale 附加到我的视图层属性。我能够正确放大形状图层,但是很难让视图框架放大并适合形状图层生成的图形,就像它应该的那样。一切都是相同的大小,即视图框架与所有形状层的大小相同。
有人对如何解决这个问题有任何建议吗?我尝试更改视图转换属性以及视图层转换属性。不确定我在这里缺少什么。
- (void) setSize:(CGSize)size
{
CATransform3D transform = CATransform3DMakeScale(size.width / (self.graphic.initialSize.width), size.height / (self.graphic.initialSize.height), 1);
self.layer.sublayerTransform = transform;
self.frame = CGRectMake(0, 0, size.width, size.height);
self.graphic.size = CGSizeMake(size.width, size.height);
}
也供参考,这是我设置视图层的方式:
- (id)initWithGraphic:(Graphic*)graphic
{
self = [super initWithFrame:CGRectZero];
if (self)
{
self.backgroundColor = [UIColor clearColor];
_graphic = [graphic retain];
self.frame = CGRectMake(0,0, _graphic.initialSize.width, _graphic.initialSize.height);
self.layer.shouldRasterize = YES;
for (int i = 0; i < [_graphic.shapeLayers count]; i++)
{
[self.layer addSublayer:[_graphic.shapeLayers objectAtIndex:i]];
}
}
return self;
}
这是我设置其中一个形状层的方式:
CAShapeLayer *outlineShapeLayer = [[CAShapeLayer alloc] init];
outlineShapeLayer.anchorPoint = CGPointMake(0, 0);
outlineShapeLayer.fillColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1].CGColor;
outlineShapeLayer.bounds = shapeLayerFrame;
outlineShapeLayer.mutablePath = mutablePath;
【问题讨论】:
-
它是什么样子的?目前尚不清楚什么不起作用。
-
@mundi - 我稍后会尝试拍一张照片,但是当我放大它时,它会移出框架向左上角方向移动。当我减少它时,它会相反。
标签: iphone ios cocoa-touch core-animation calayer