相关疑难解决方法(0)

34
推荐指数
3
解决办法
4万
查看次数

绘制带有渐变和阴影的圆形UIView

编辑:

我终于找到了一个真正简单的解决方案,使用CAGradientLayer类和CALayer绘图功能.
Ole Begemann为名为OBGradientView的 CAGradientLayer类发布了一个很棒的UIView包装器.
该类允许您在应用程序中轻松创建渐变UIView.
然后使用CALayer绘图功能添加圆角和投影值:

// Create the gradient view
OBGradientView *gradient = [[OBGradientView alloc] initWithFrame:someRect];
NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor yellowColor], nil];
gradient.colors = colors;

// Set rounded corners and drop shadow
gradient.layer.cornerRadius = 5.0;
gradient.layer.shadowColor = [UIColor grayColor].CGColor;
gradient.layer.shadowOpacity = 1.0;
gradient.layer.shadowOffset = CGSizeMake(2.0, 2.0);
gradient.layer.shadowRadius = 3.0;

[self.view addSubview:gradient];
[gradient release];
Run Code Online (Sandbox Code Playgroud)

别忘了将QuartzCore框架添加到您的项目中.



原始问题:

我一直在研究一个自定义控件,它是一个圆角矩形按钮,填充线性渐变,并有一个投影.我使用这个答案填写了前两个步骤:链接文本

我现在的问题是在生成的形状下添加一个阴影.实际上,上下文被剪切到圆角矩形路径,所以当我使用CGContextSetShadow函数时,它不会绘制它.

我尝试通过绘制圆角矩形两次来解决这个问题,首先使用普通颜色,因此它绘制阴影,然后使用渐变填充重绘它.

它有点工作,但我仍然可以看到在第一次使用纯色绘制时形状角落处的几个像素,正如您在此缩放版本中看到的那样:

http://img269.imageshack.us/img269/6489/capturedcran20100701192.png

它几乎是好的,但还不完美......

这是我的-drawRect:实现:

static void addRoundedRectToPath(CGContextRef context, CGRect rect, float …
Run Code Online (Sandbox Code Playgroud)

iphone gradient rounded-corners uiview dropshadow

14
推荐指数
1
解决办法
2万
查看次数