我有一个小视图,上面有几个按钮。当你将UINavigation栏设置为Black Opaque时,我想让这个小视图背景与渐变相同的黑色渐变?
这可能是以编程方式进行还是我需要在Photoshop上尽我所能来复制它? :)
答案 0 :(得分:3)
UIView和绘制背景的简单覆盖drawRect消息:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
GContextDrawLinearGradient(context, self.gradientLayer, CGPointMake(0.0, 0.0),
CGPointMake(0.0, self.frame.size.height), kCGGradientDrawsBeforeStartLocation);
}
要创建和缓存渐变,请使用此代码段(您应该使用自己的颜色组件)。
- (CGGradientRef)gradientLayer
{
if (_gradientLayer == nil)
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = { 0.0, 1.0 };
CGFloat colors[] = { 0.0 / 255.0, 0.0 / 255.0, 48.0 / 255.0, 1.00, 26.0 / 255.0, 48.0 / 255.0, 89.0 / 255.0, 1.00 };
_gradientLayer = CGGradientCreateWithColorComponents(colorSpace, colors, locations, sizeof(colors) / (sizeof(colors[0]) * 4));
CGColorSpaceRelease(colorSpace);
}
return _gradientLayer;
}
当然不要忘记将你的渐变释放到dealloc。