【发布时间】:2014-01-14 18:56:15
【问题描述】:
我有以下代码:
- (void)setupLayer {
self.faucetShape = [CAShapeLayer layer];
self.faucetShape.strokeColor = [[UIColor blackColor] CGColor];
self.faucetShape.lineWidth = 2;
self.faucetShape.fillColor = nil;
self.faucetShape.path = [self faucetPath].CGPath; // faucetPath returns a 4 point diamond shaped UIBezierPath*
self.faucet = [CAGradientLayer layer];
self.faucet.mask = self.faucetShape;
self.faucet.colors = @[(id)[UIColor redColor].CGColor, (id)[UIColor redColor].CGColor];
[self.layer addSublayer: self.faucet];
}
但它什么也没显示。不知道我错过了什么(除了我的图形)。
(faucet 和 faucetPath 都是属性)
更新
好的,我猜CAGradientLayer 必须有一个有意义的frame。我假设CAShapeLayer 的frame 没有意义,因为path 可以超出frame。添加以下行使其显示:
self.faucet.frame = CGRectMake(0, 0, 64, 64);
所以现在我的问题是,有没有办法避免这样做?我只是希望图层的框架隐含地成为包含视图/图层的框架。
【问题讨论】:
-
它们不是弱属性,不是吗?
-
轻笑,不 :) 他们是
(strong, nonatomic) -
您是否检查过您的
faucetPath方法是否正在返回您想要的结果? -
不@Unheilig,这不起作用。父级的框架是
{{256, 0}, {64, 64}}。也许如果我使用边界。