我正在尝试在表格视图中绘制装饰 UITableViewCell 的文本横幅,该横幅看起来像邮票,斜跨单元格的左上角。
我可能完全在错误的地方执行此操作,但我正在覆盖-layoutSubviews
添加图层。我试图这样做,-drawRect:
但横幅最终被表格视图的 imageView 覆盖,因为表格呈现(即图层位于图像视图下方,因为稍后添加了图像视图)。
我真的很难得到正确的数学。我计算过,假设横幅从单元格顶部的 40 点和左侧的 40 点开始,角度正好为 -45º,则斜边将为 56 点。所以我正在制作一个 56 点宽的 CALayer,然后将其旋转 -45º,这样就可以了。问题是牢房内的位置……它坐落在牢房的外面,而不是硬靠在牢房的边缘。
与其让我通过反复试验来把它放在正确的地方,有人可以帮我做数学吗?显然我需要移动图层并旋转它。
感觉 anchorPoint 是我在这里需要的,但这似乎实际上是在移动图层,所以我一定错过了这一点(不是双关语)。
- (void)layoutSubviews
{
[super layoutSubviews];
self.imageView.frame = CGRectMake(10, 10, 50, 50);
if (self.hasBanner) {
CALayer *banner = [CALayer layer];
banner.backgroundColor = [UIColor colorWithRed:.5f green:.5f blue:.5f alpha:1.f].CGColor;
banner.frame = CGRectMake(0, 40-15, 56, 15);
banner.anchorPoint = CGPointMake(0, 1); // this just makes it worse
banner.transform = CATransform3DMakeRotation(-45.0 / 180.0 * M_PI, 0.0, 0.0, 1.0);
[self.layer addSublayer:banner];
}
}