0
Я хочу создать подкласс UIView
с маской. Я пробовал использовать drawRect
и layoutSubviews
, но не успел, в тезисы попытки вид не появляется.CAShapeLayer в подклассе UIView
- (void)layoutSubviews {
[super layoutSubviews];
UIBezierPath *path = [UIBezierPath new];
[path moveToPoint:(CGPoint){self.frame.origin.x + 10, self.frame.origin.y}];
[path addLineToPoint:(CGPoint){self.frame.origin.x + self.frame.size.width, self.frame.origin.y}];
[path addLineToPoint:(CGPoint){self.frame.origin.x + self.frame.size.width, self.frame.origin.y + self.frame.size.height}];
[path addLineToPoint:(CGPoint){self.frame.origin.x +10, self.frame.origin.y + self.frame.size.height}];
[path addLineToPoint:(CGPoint){self.frame.origin.x +10, self.frame.origin.y + (self.frame.size.height/2) + 5}];
[path addLineToPoint:(CGPoint){self.frame.origin.x , self.frame.origin.y + (self.frame.size.height/2)}];
[path addLineToPoint:(CGPoint){self.frame.origin.x +10, self.frame.origin.y + (self.frame.size.height/2) - 5}];
[path closePath];
CAShapeLayer *mask = [CAShapeLayer new];
mask.frame = self.bounds;
mask.path = path.CGPath;
self.layer.mask = mask;
}
Каков метод, который у меня есть для этого? Я вижу очень ответы на подобные вопросы, но не работаю для меня.
Это не правильное решение. Единственное, что вы должны сделать в 'layoutSubview', - это обновление фреймов subviews. Вы не должны рисовать. И вы должны обязательно * не * называть 'layoutIfNeeded' внутри' layoutSubviews'. – rmaddy