【发布时间】:2012-06-01 04:14:23
【问题描述】:
我创建了一个自定义 UIView,我最终将拥有 10 个用户可以点击的区域。当一个区域被点击时,我想覆盖一个低 alpha 层来指示他们的选择。
不幸的是,当我点击一个部分时,我创建的 CALayer 正在我的自定义视图范围之外绘制。好像我的 x 和 y 坐标都关闭了。
这是我的自定义视图中的 drawRect 方法:
- (void)drawRect:(CGRect)dirtyRect
{
if (touchPoint.x > 0 || touchPoint.y > 0){
CGRect bounds = [self bounds];
float widthOfArea = bounds.size.width / 10.0;
float sectionNumber = round(touchPoint.x / widthOfArea);
touchOverlayLayer = [[CALayer alloc] init];
[touchOverlayLayer setBounds:CGRectMake(0.0, 0.0, widthOfArea, bounds.size.height)];
[touchOverlayLayer setPosition:CGPointMake(widthOfArea * sectionNumber, self.bounds.origin.y)];
UIColor *greyish = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:.5];
CGColorRef cggreyish = [greyish CGColor];
[touchOverlayLayer setBackgroundColor:cggreyish];
[[self layer] addSublayer:touchOverlayLayer];
}
}
结果显示已附加。
【问题讨论】:
-
我应该补充一下,我可以通过创建一个 100x100 矩形和 setPostion:CGPointMake(0.0, 0.0) 来简化它,我得到非常相似的结果。
标签: objective-c uiview calayer