iOS怎么动画实现viewcad直角变圆角转圆角

自定义UIProgressView,实现圆角效果 | 易网联信
我的图书馆
自定义UIProgressView,实现圆角效果 | 易网联信
在开发过程中,进度条的使用量相当大,但至今,IOS的UIProgressView灵活性也不够。虽然IOS5.0以后,UIProgressView多了progressImage和trackImage两个属性,让我们可以使用图片资源来设置UIProgressView的样式,但不知是因为学艺不精,还是真没方法,目前为止我没找到方法可以改变UIProgressView的高度。而且progressImage和trackImage在IOS5.0以后才支持,那么在旧版系统上则会直接异常退出了。
我现在自定义进度条的方法很简单,简单说明一下我的思路:
最终效果图:
新建一个类MyProgressView继承于UIView,在view上添加两个UIImageView和一个UIView:
CGSize size = self.frame.
_trackView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
_trackView.image = trackI//进度未填充部分显示的图像
[self addSubview:_trackView];
[_trackView release];
UIView *progressViewBg = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
progressViewBg.clipsToBounds = YES;//当前view的主要作用是将出界了的_progressView剪切掉,所以需将clipsToBounds设置为YES
[self addSubview:progressViewBg];
_progressView = [[UIImageView alloc] init];
_progressView.image = progressI//进度填充部分显示的图像
[self setProgress:progress];//设置进度
[progressViewBg addSubview:_progressView];
[_progressView release];
[progressViewBg release];
-(void)setProgress:(float)fProgress
progress = fP
CGSize size = self.frame.
_progressView.frame = CGRectMake(size.width * progress – size.width, 0, size.width, size.height);//image的宽和高不变,将x轴的坐标根据progress的大小左右移动即可显示出进度的大小,progress的值介于0.0至1.0之间。因为_progressView的父级view上clipsToBounds属性为YES,所以当_progressView的frame出界后不会被显示出来。
其实关于图像的裁剪网上多数提供的方法是使用CGImageRef,如:
CGRect rect = CGRectMake(size.width – size.width * progress, 0, size.width * progress, size.height);
if (rect.size.width != 0) {
CGImageRef imageRef = CGImageCreateWithImageInRect(progressImage.CGImage, rect);
_progressView.image = [UIImage imageWithCGImage:imageRef];
由于CGImageRef的裁剪不会自适应高清资源,所以如此使用在Retina Display中则无法正常显示了,除非项目中不添加当前图像的高清资源。
若不使用图像或图像上自身不带圆角,实现圆角效果更简单,只需要设置
_progressView.layer.masksToBounds = YES;
_progressView.layer.cornerRadius = 10;
即可,就不详细介绍了,相信你能做的比我更好。
TA的最新馆藏
喜欢该文的人也喜欢中国领先的IT技术网站
51CTO旗下网站
iOS开发:设置UITextView的圆角
本文为大家介绍了iOS开发中如何设置UITextView的圆角。正常的UITextView都是默认方角的,本文为大家分享了如何把UITextView的方角改为圆角的方法。
作者:佚名来源:apkbus| 11:34
一般情况下,我们看到的UITextView都是方角的:
将UITextView的方角转成圆角:
#import&&[self.textView.layer&setCornerRadius:10]
【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
关注热点原创原创聚焦
24H热文一周话题本月最赞
讲师:218472人学习过
讲师:228124人学习过
讲师:16743人学习过
精选博文论坛热帖下载排行
本书使用通俗易懂的语言,通过大量的实例,从实际应用的角度出发,全面系统地介绍了网络服务操作系统平台、电子邮件系统、Web站点和FTP站点...
订阅51CTO邮刊iOS编程101:如何创建圆形头像和圆角图片 - 为程序员服务
iOS编程101:如何创建圆形头像和圆角图片
15269 阅读
IOS7的一个变化是相对于方形图像,更偏爱于使用圆形图像。在内置的应用中可以看到圆形图标或圆形图像,如联系人和电话应用。这篇短文中,我们将探讨CALayer类,以及如何运用它来创建圆形图像或圆角图像。
您可能并没有听说过CALayer类。但是,如果你曾经创建过应用程序,那么你应该以某种方式使用过它。UIKit中的每个视图(例如UIView、UIImageView)都备份在一个CALayer类的实例中(即layer对象)。layer对象用来管理视图的备份存储和处理视图相关的动画。
layer对象提供了多种属性,使用它们来控制视图的可视内容:
边框和边框宽度
阴影颜色,宽度等
Opacity(不透明度)
Corner radius就是我们用来绘制圆角和圆形图像的属性。
与往常一样,了解CALayer是如何工作的最好方法就是使用它。我们将创建一个带有圆形用户头像的简单的profile视图。
快速了解演示项目
首先,。已经预先创建了profile视图,但编译并运行应用程序时你会发现用户头像是方形的。这个演示项目非常简单,只有一个类ProfileViewController,与storyboard中的视图相关联。
同时,将用户头像图像(UIImageView)与ProfileViewController.h中的profileImageView属性关联起来。
创建圆形用户头像
接下来,让我们看看如何通过改变圆角半径,使用户头像转换成一个圆形图像。
打开ProfileViewController.m,并在viewDidLoad:方法中添加下面几行代码:
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = YES;
每一个视图,都有一个捆绑的layer属性。所以上面的第一行是设置layer对象(CALayer类的一个实例)的圆角半径。将方形图像变成圆形图像,半径应设置为UIImageView宽度的一半。例如,如果方形图像的宽度是100像素。半径应设置为50像素。其次,你必须将clipsToBounds属性设置为YES,这样layer才能生效。
现在编译和运行应用程序,你会得到一个圆形头像。
非常容易吧。只需两行代码,图像从方形变为圆形。无需Photoshop。
接下来,我们给头像添加边框使它更漂亮点。同样,也只需要两行。在viewDidLoad:方法中,在设置圆角半径的代码后面加入以下两行代码:
self.profileImageView.layer.borderWidth = 3.0f;
self.profileImageView.layer.borderColor = [UIColor whiteColor].CGC
我们只是设置了边框的宽度和边框颜色。再次编译并运行应用程序,您现在应该看到一个拥有白色边框的头像。
创建圆角图片
你可以使用同样的方法来创建圆角图像。关键是要改变圆角半径,并将其设置为其他值。比如设置半径为10:
self.profileImageView.layer.cornerRadius = 10.0f;
用户头像现在应该是圆角的了。
在这里,供大家参考 。
——————————————————————-
关注信息无障碍!
原文地址:, 感谢原作者分享。
您可能感兴趣的代码iOS怎么动画实现view直角转圆角? - 知乎8被浏览310分享邀请回答let animation = CABasicAnimation(keyPath: "cornerRadius")
animation.fromValue = 0
animation.toValue = 50;
animation.duration = 1;
animation.removedOnCompletion = false
animation.fillMode = kCAFillModeForwards
aView.layer.addAnimation(animation, forKey: "cornerRadiusAnimation")
94 条评论分享收藏感谢收起ios怎么让图片只有上半边圆角? - 知乎50被浏览10624分享邀请回答CGContextRef context = UIGraphicsGetCurrentContext();
UIImage *your_image = [UIImage imageNamed: @"your_image_name"];
UIBezierPath *rectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(100, 100, 100, 100) byRoundingCorners: UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii: CGSizeMake(5, 5)];
[rectanglePath closePath];
CGContextSaveGState(context);
[rectanglePath addClip];
[your_image drawInRect: CGRectMake(100, 100, your_image.size.width, your_image.size.height)];
CGContextRestoreGState(context);
你觉得不爽,你可以自己封装嘛当然也可以如楼上所说,用一些取巧的办法。271 条评论分享收藏感谢收起

我要回帖

更多关于 cad直角变圆角 的文章

 

随机推荐