Не думайте, что вы можете сделать это с помощью CALayer легко - вы можете создать подкласс NSView и создать простую процедуру перерисовки.Может быть проще всего использовать http://www.cocoadev.com/index.pl?RoundedRectangles в качестве отправной точки (после удаления двух кривых Безье, которые вы не хотите округлять), а затем выполните простое:
- (void)drawRect:(CGRect)rect
{
self.layer.masksToBounds = NO;
self.layer.shadowColor = [[UIColor xxxx] CGColor];
self.layer.shadowOffset = CGSizeMake(0,2);
self.layer.shadowRadius = ...
self.layer.shadowOpacity = ...
UIBezierPath *path = [UIBezierPath bezierPathWithPartiallyRoundedRect:rect
byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(20, 20)];
[[UIColor blackColor] setFill or Stroke];
[path stroke or fill];
}
В приведенной выше ссылке -Второй упрощенный пример упрощает вашу жизнь - вы можете просто сделать два из них 'path lineToPoint: ..'.