MacやiPadのSafariのような効果をタブで実現しようとしています。ナビゲーションバーと現在のタブは1つです。UINavigationBar / UIToolbarを拡張してUIViewサブクラスとマージして1として表示するにはどうすればよいですか?
答え:
独自のUIToolbarサブクラスを作成し、このdrawRect:(CGRect)rect
メソッドを使用して、UIToolbarをその色のみのUIViewサブクラスと同じ色にしました。
- (void)drawRect:(CGRect)rect
{
// Drawing code
//// General Declarations
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();
//// Color Declarations
UIColor* gradientColor = [UIColor colorWithRed: 0.916 green: 0.916 blue: 0.916 alpha: 1];
UIColor* gradientColor2 = [UIColor colorWithRed: 0.811 green: 0.811 blue: 0.811 alpha: 1];
//// Gradient Declarations
NSArray* gradientColors = [NSArray arrayWithObjects:
(id)gradientColor.CGColor,
(id)gradientColor2.CGColor, nil];
CGFloat gradientLocations[] = {0, 1};
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)gradientColors, gradientLocations);
//// Rectangle Drawing
UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(-1, 0, 769, 45)];
CGContextSaveGState(context);
[rectanglePath addClip];
CGContextDrawLinearGradient(context, gradient, CGPointMake(383.5, -0), CGPointMake(383.5, 45), 0);
CGContextRestoreGState(context);
//// Cleanup
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
}