UINavigationController с пользовательской панелью навигации формы

Я пытаюсь создать пользовательский UINavigationBar с пользовательской формой, как это (игнорировать прозрачность)

Как вы можете видеть, этот UINavigationBar имеет собственную форму, и я пытаюсь повторить ее.

Оглядываясь вокруг я нашелэтот ответ, где это объясняет первые шаги, за которыми я следовал.

1) Я создал подкласс UINavigationBar под названием CustomNavigationBar. 2) Я переопределил метод sizeThatFits следующим образом:

- (CGSize) sizeThatFits:(CGSize)size
{
  return CGSizeMake(320.0, 70.0);
}

3) И вот где я потерялся ...

В предыдущем ответе сказано, что UIBezierPath можно использовать для создания пользовательской фигуры (даже с кривыми), а затем применять в качестве маски. Я попробовал этот переопределенный drawRect, но все, что я получаю, это большая черная панель навигации (мой цвет панели установлен на красный).

РЕДАКТИРОВАТЬ: моя ничья была неправильной, это правильный

- (void)drawRect:(CGRect)rect
{
  UIBezierPath *path = [[UIBezierPath alloc] init];
  [path moveToPoint:CGPointZero];
  [path addLineToPoint:CGPointMake(320.0, 0.0)];
  [path addLineToPoint:CGPointMake(320.0, 50.0)];
  [path addQuadCurveToPoint:CGPointMake(0.0, 50.0) controlPoint:CGPointMake(160.0, 90.0)];
  [path closePath];

  [[UIColor redColor] setFill];

  [path fill];
}

РЕДАКТИРОВАТЬ: Как сказано ниже, в моем коде было несколько ошибок, и теперь он что-то рисует.

Как вы можете видеть, UIBezierPath правильно определяет форму, но есть некоторые новые проблемы:

1) Строка состояния полностью черная, там ничего не отображается, даже если я изменю его цвет на светлый, он ничего не показывает. Что мне не хватает?

2) Из-за метода sizeThatFits осталась еще какая-то черная часть. Есть ли способ сделать эту часть прозрачной?

Спасибо всем!

РЕДАКТИРОВАТЬ 2: хорошо, я полностью изменил свое мнение об этой проблеме, и я думаю, что приближаюсь к решению. Сейчас я пытаюсь использовать прозрачный png-файл в качестве фона, но все же нужно увеличить его высоту, так что сейчас это мой код.

- (CGSize) sizeThatFits:(CGSize)size
{
   return [[UIImage imageNamed:@"Layer3"] size];
}

- (void)drawRect:(CGRect)rect
{
  [self setClipsToBounds:NO];
  UIImage *image = [UIImage imageNamed:@"Layer3"];
  [image drawInRect:rect];
}

Проще, правда? Очевидно, «Layer3» - это название моего прозрачного изображения в формате png. Но сейчас это то, что я получаю.

Как видите, строка состояния не покрыта изображением png.

Чего мне не хватает сейчас?

Спасибо!