正确掩盖CALayers

时间:2012-01-02 00:15:30

标签: ios core-animation calayer cashapelayer tapku

我正在使用TapkuLibrary的优秀TKCalendarDayEventView并尝试选择性地将视图中的一个角点为StuDev demonstrates here。不幸的是,应用StuDev的代码片段导致EventView完全从包含TKCalendarDayTimelineView的消失中消失。我将此代码段添加到

中当前代码的下方

+ (id)eventViewWithFrame:(CGRect)frame id:(NSNumber *)id startDate:(NSDate *)startDate endDate:(NSDate *)endDate title:(NSString *)title location:(NSString *)location;

方法。我已经注释掉了代码,否则会在代码中设置边框宽度,颜色或半径。我已经确定TKCalendarDayEventView没有任何超级层,因为 apple docs警告不要使用超级层为图层添加蒙版:

  

将蒙版设置为新图层时,必须首先将新图层的超级图层设置为nil,否则行为未定义。

我也尝试过使用maskLayer的backgroundColor和fillColor属性。我没有在TKCalendarDayEventView中看到任何可能阻止正确应用此掩码的内容。我能做错什么?

1 个答案:

答案 0 :(得分:1)

如果您在eventViewWithFrame:id:startDate:endDate:title:location:方法中设置了断点,则会在创建事件视图时看到您将帧设置为CGRectZero。然后设置圆角掩码的代码片段使用CGRectZero作为遮罩层的帧。

处理此问题的最简单方法可能是覆盖TKCalendarDayEventView的{​​{1}}方法,如下所示:

setFrame:

这样,每次更改视图的框架时,蒙版都会自动调整。

相关问题