首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何绘制一个仅为circle - iPhone应用程序的自定义UIView

如何绘制一个仅为circle - iPhone应用程序的自定义UIView
EN

Stack Overflow用户
提问于 2011-07-06 05:47:18
回答 5查看 150.4K关注 0票数 134

我该如何绘制一个自定义的UIView,它实际上只是一个球(一个2D圆)?我是否只需重写drawRect方法?有人能给我看一下画蓝色圆圈的代码吗?

另外,是否可以在类本身中更改该视图的框架?或者我需要更改来自不同类的框架?

(只是尝试设置一个弹跳的球)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-06 05:56:19

你可以用QuartzCore做这样的事情--

代码语言:javascript
复制
self.circleView = [[UIView alloc] initWithFrame:CGRectMake(10,20,100,100)];
self.circleView.alpha = 0.5;
self.circleView.layer.cornerRadius = 50;  // half the width/height
self.circleView.backgroundColor = [UIColor blueColor];
票数 213
EN

Stack Overflow用户

发布于 2014-07-13 23:38:46

这是使用UIBezierPath的另一种方法(可能为时已晚^^)创建一个圆并用它屏蔽UIView,如下所示:

代码语言:javascript
复制
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
view.backgroundColor = [UIColor blueColor];

CAShapeLayer *shape = [CAShapeLayer layer];
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:view.center radius:(view.bounds.size.width / 2) startAngle:0 endAngle:(2 * M_PI) clockwise:YES];
shape.path = path.CGPath;
view.layer.mask = shape;
票数 31
EN

Stack Overflow用户

发布于 2016-06-28 23:32:08

我对Swift扩展的贡献:

代码语言:javascript
复制
extension UIView {
    func asCircle() {
        self.layer.cornerRadius = self.frame.width / 2;
        self.layer.masksToBounds = true
    }
}

只需调用myView.asCircle()即可

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6589265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档