Если вы установите точку останова в своем методе eventViewWithFrame:id:startDate:endDate:title:location:
, вы увидите, что при создании представления событий вы устанавливаете фрейм на CGRectZero
.Фрагмент кода, который затем устанавливает маску закругленного угла, использует CGRectZero
в качестве фрейма слоя маски.
Вероятно, самый простой способ справиться с этим - переопределить метод TKCalendarDayEventView
* setFrame:
, например, так:
- (void)setFrame:(CGRect)newFrame
{
if (!CGRectEqualToRect([super frame], newFrame)) {
[super setFrame:newFrame];
// Change the view's mask layer to fit the new frame.
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
byRoundingCorners:UIRectCornerTopLeft
cornerRadii:CGSizeMake(15.0, 15.0)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;
self.layer.mask = maskLayer;
}
}
Таким образом, каждый раз, когда вы меняете рамку вида, маска автоматически подстраивается.