2013-06-20 2 views
0

Я хотел бы создать UIView, который имеет закругленные углы в верхнем левом и верхнем правом углу.Уровень UIView не правильно маскируется

Для этого я хотел бы скрыть UIView с помощью CAShapeLayer.

Это код, я использую:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.menuContainerView.bounds 
               byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight 
                cornerRadii:CGSizeMake(20.0, 20.0)]; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = self.menuContainerView.bounds; 
maskLayer.path = maskPath.CGPath; 

self.menuContainerView.layer.mask = maskLayer; 

Однако, когда я запускаю этот код, оказывается, что маска не имеет никакого эффекта. Любые идеи, почему бы и нет?

ответ

0

Что я не упоминал в своем ответе, так это то, что я также устанавливал тот же maskLayer, что и маска, на другое представление (одно за другим). Видимо, вы не можете этого сделать .... я удалил эту дополнительную строку

self.otherContainerView.layer.mask = maskLayer; 

и он работал по желанию.

+2

Для маскировки путь может использоваться только для одного вида. Если вы хотите его на нескольких представлениях, вы можете просто переделать путь (даже используя одну и ту же переменную), а затем добавить это к другому представлению. Я тоже нашел это. – Putz1103