关于iOS中UIView类视图的圆角

iOS开发中,常常由于需求,而需要圆角的样式.如果4个角都是圆角的,还好说.一行两行代码就可以搞定.就是CAlayer.可是现在我想说下不规则的圆角.目前我还没有找到更好的方法来画圆角.希望有解决方法的朋友看到这篇文章,能交流学习下.

1     UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:sourceView.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopLeft cornerRadii:CGSizeMake(5, 5)];
2     CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
3     maskLayer.frame = sourceView.bounds;
4     maskLayer.path = maskPath.CGPath;
5     sourceView.layer.mask = maskLayer;
  号称是最优雅的画不定圆角视图的方法.想画哪个圆角就在bezierPathWithRoundedRect:byRoundingCorners: 方法中添加相应枚举值就行了.如下图(左侧图标的左圆角就是用这种方法切的.):

比如我这个方法中,画了左侧图标的左上角和左下角的圆形.

当然这样虽然代码优雅,可实际效果并不是很好.cornerRadii的值设置大了以后,可以把自定义的组合视图中,UITextField和UITextView视图的边框给切掉.惨不忍睹.我只能用遮盖输入框的方法,来隐藏掉输入框的左侧圆角.
时间: 2024-10-15 02:05:19

关于iOS中UIView类视图的圆角的相关文章

iOS中UIView之间布局及跳转的几种方式

UIView是iOS开发中所有视图的基类, 表示屏幕上的一块矩形区域, 同时可以处理该区域的绘制和触摸事件. UIViewController是视图控制器的基类, 用来处理屏幕之间的切换等操作, 提供视图管理模型. 一个UIViewController管理一个层级的UIView. 而RootViewController就是iOS应用启动时被载入的第一个视图控制器(可在main.storyboard中指定), 展示APP启动成功后的第一个界面. 因此, iOS中在各个UIViewControlle

iOS 中 UIView 和 CALayer 的关系

UIView 有一个名叫 layer ,类型为 CALayer 的对象属性,它们的行为很相似,主要区别在于:CALayer 继承自 NSObject ,不能够响应事件. 这是因为 UIView 除了负责响应事件 ( 继承自 UIReponder ) 外,它还是一个对 CALayer 的底层封装.可以说,它们的相似行为都依赖于 CALayer 的实现,UIView 只不过是封装了它的高级接口而已. 那 CALayer 是什么呢? CALayer(图层) 文档对它定义是:管理基于图像内容的对象,允许

Django中url中可以使用类视图.as_view()进行映射的原因

说明:本人在学练习天天生鲜项目时,对利用类视图去与正则匹配到的url做映射有点疑惑,经过查看他人博客以及自我分析算是整明白了,所以记录一下 参考:https://www.zmrenwu.com/post/53/ HTTP发送请求的方式有很多种,这里以POST,GET为例.当在浏览器中输入url地址时(如http://127.0.0.1:8000/userr/register) 会进行正则匹配,并映射到ActiveView.as_view(),其最终达到能将注册页面显示出来的效果,原因如下: cl

IOS中UIView的layoutSubviews和drawRect

UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了.而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据. 综上两个方法都是异步执行的,layoutSubviews方便数据计算,drawRect方便视图重绘. 先大概看下ios layout机制相关的

iOS中如何优雅的添加圆角和边框?

因为项目需要,整理了下圆角和边框辅助类.想起前几天标哥还在微博里问圆角在tableView里卡顿的问题,想着去炫耀下.去到标哥的博客,发现已经有一定程度解决,给出开源库并且在推广,迭代了好几个版本了.. 圆角这东西被无数性能追求者津津乐道,无数小白们高山仰止. 至于圆角的几种实现方案,设置cornerRadius.加maskLayer.直接加镂空图.内存异步裁剪等等,网络上一搜一大把,这里就不再重复了.这里有两点要提醒下,纹理裁剪才是off-screen rendering的原因,而不是设置圆角

ios 中代理类汇总

ios 代理类总结一下.今后多看看 UITextViewDelegate UIToolbarDelegate UITextInputDelegate UITextFieldDelegate UIWebViewDelegate NSLayoutManagerDelegate //UIActionSheet //UIActionSheetDelegate 要放弃 //UIAlertView  要放弃 //UIAlertViewDelegate //优先使用preferred //UIAlertCon

在IOS中 NSRange类详解

NSRange的定义 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度.他们都是NSUInteger类型. 而NSUInteger类型的定义如下: #if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WI

iOS 创建表格类视图WBDataGridView

项目中创建表格, 引用头文件 #import "WBDataGridView.h" - (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; CGFloat margin = 10.f; CGFloat width = self.view.frame.size.

IOS设置UIView的边框为圆角

述一下实现过程: ?    首先创建一个项目,名字叫:ipad_webwiew ?    利用Interface Builder添加一个UIWebView,然后和相应的代码相关联 ?    添加QuartzCore.framework 代码实现: 头文件: #import <UIKit/UIKit.h>? #import <QuartzCore/QuartzCore.h>? @interface ipad_webwiewViewController : UIViewControll