Как закруглить один угол изменяемого размера UIView в IOS?

Я использую этот код, чтобы закруглить один угол моего:UIView

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:
    self.view.bounds byRoundingCorners:(UIRectCornerTopLeft) cornerRadii:
    CGSizeMake(10.0, 10.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.view.bounds;
maskLayer.path = maskPath.CGPath;
self.view.layer.mask = maskLayer;
self.view.layer.masksToBounds = NO;

Этот код работает, пока я неникогда не меняй вид. Если я увеличу вид, новая область не появится, потому чтоs выходит за границы слоя маски (этот слой маски не изменяет размеры автоматически при просмотре). Я мог бы просто сделать маску такой большой, какой ей когда-либо понадобится, но на iPad она может быть полноэкранной, поэтому яя беспокоюсь о производительности с такой большой маской (ябудет иметь более одного из них в моем пользовательском интерфейсе). Кроме того, суперразмерная маска нене работает для ситуации, когда мне нужен верхнийправо угол (один) должен быть закруглен.

Есть ли более простой способ добиться этого?

Обновить: вот что яЯ пытаюсь достичь:http://i.imgur.com/W2AfRBd.png (округленный угол, который я хочу, обведен здесь зеленым цветом).

Я достиг рабочей версии этого, используя подклассUINavigationController и переопределениеviewDidLayoutSubviews вот так:

- (void)viewDidLayoutSubviews {
    CGRect rect = self.view.bounds;
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:rect 
        byRoundingCorners:UIRectCornerTopLeft cornerRadii:CGSizeMake(8.0, 8.0)];
    self.maskLayer = [CAShapeLayer layer];
    self.maskLayer.frame = rect;
    self.maskLayer.path = maskPath.CGPath;
    self.view.layer.mask = self.maskLayer;
}

Затем я создаю свой экземплярUINavigationController подкласс с моим контроллером представления, а затем я смещу кадр контроллера Nav 's на 20px (y) откройте строку состояния и оставьте панель навигации высотой 44 пикселя, как показано на рисунке.

Код работает, за исключением того, что он нене очень хорошо справляется с вращением. Когда приложение вращается,viewDidLayoutSubviews вызываетсядо вращение и мой код создает маску, которая соответствует видупосле вращение; это создает нежелательную блокировку вращения, когда биты, которые должны быть скрыты, выставляются во время вращения. Кроме того, тогда как приложениеБез этой маски вращение идеально плавное, а при создании маски вращение становится заметно рывковым и медленным.

Приложение для iPad Evomail также имеет закругленные углы, как это, и их приложение страдает от той же проблемы.

Ответы на вопрос(9)

Ваш ответ на вопрос