iOS 学习 - 11.圆角(小于等于四个)类似气泡和计算字符高度
使用贝塞尔曲线,
- // 小于四个角 圆角
- -(void)setbor{
- NSString *str = @" couldn't fit this all in a comment to @lomanf's answer. So I'm adding it as an answer.";
- //计算字符高度
- [Corner layoutHeightWithLable:self.label text:str];
- /*
- 1.使用空白 view addSubView label
- 2.得到类似 qq 聊天气泡,仅仅只是类似,还是有区别
- */
- UIView *view = [[UIView alloc]init];
- //view 的 frame 要比 label 大一点,不然切圆角会切到字符串
- view.frame = CGRectMake( , , _label.frame.size.width + , _label.frame.size.height + );
- view.backgroundColor = [UIColor redColor];
- //圆角
- [Corner createCornerInView:view corners:UIRectCornerBottomLeft|UIRectCornerTopRight cgsize:CGSizeMake(, )];
- [self.view addSubview:view];
- [view addSubview:_label];
- }
新建了一个类:Corner
.h
- #import <UIKit/UIKit.h>
- @interface Corner : UIView
- +(void)createCornerInView:(UIView *)view corners:(UIRectCorner)corner cgsize:(CGSize)size;
- +(void)layoutHeightWithLable:(UILabel *)label text:(NSString *)text;
- @end
.m
- +(void)layoutHeightWithLable:(UILabel *)label text:(NSString *)text{
- label.numberOfLines = ;
- label.lineBreakMode = NSLineBreakByWordWrapping;
- CGSize maxSize = CGSizeMake(, MAXFLOAT);
- CGSize textSize = [text boundingRectWithSize:maxSize options:(NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin) attributes:@{NSFontAttributeName:label.font} context:nil].size;
- label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, textSize.width, textSize.height);
- label.text = text;
- }
- +(void)createCornerInView:(UIView *)view corners:(UIRectCorner)corner cgsize:(CGSize)size{
- /*
- typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
- UIRectCornerTopLeft = 1 << 0, - 左上角
- UIRectCornerTopRight = 1 << 1, - 右上角
- UIRectCornerBottomLeft = 1 << 2, - 左下角
- UIRectCornerBottomRight = 1 << 3, - 右下角
- UIRectCornerAllCorners = ~0UL - 四只角
- };
- */
- //贝塞尔曲线
- UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:corner cornerRadii:size];
- CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
- maskLayer.frame = view.bounds;
- maskLayer.path = bezierPath.CGPath;
- view.layer.mask = maskLayer;
- }
iOS 学习 - 11.圆角(小于等于四个)类似气泡和计算字符高度的更多相关文章
- iOS学习笔记(十四)——打电话、发短信
电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...
- 我的iOS学习之路(四):动画设置
在ios的开发过程中,经常需要对视图控件进行变化,如大小,颜色,旋转等,这是如果直接将变化结果呈现出来,就显得不够友好,所以我们通常会使用动画,让用户能够看到变化的过程. 使用动画通常有两种方式,一种 ...
- IOS学习之路十四(用TableView做的新闻客户端展示页面)
最近做的也个项目,要做一个IOS的新闻展示view(有图有文字,不用UIwebview,因为数据是用webservice解析的到的json数据),自己一直没有头绪,可后来听一个学长说可以用listvi ...
- 【原】iOS学习之图片拉伸处理(类似qq的气泡)
原理是拉伸里面的内容,将边保护起来 方法1: ①[image resizableImageWithCapInsets:UIEdgeInsetsMake(, , , )]; ②[image resiza ...
- iOS 学习 - 20 UICollectionView 移动 Item ,类似背包
有100个 item,数据源只有20个,只能在 20 个之间移动,防止 item 复用,出现 bug 方法一:苹果自带 //UICollectionViewDataSource- (BOOL)coll ...
- iOS学习11之OC继承
面向对象的三大特性:封装,继承,多态. 1.继承 继承既能保证类的完整,又能简化代码. 把公共的⽅法和实例变量写在⽗类⾥,⼦类只需要写⾃⼰独有的实例变量和⽅法即可. 继承是⾯向对象三⼤特性之⼀,合理的 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据
原文: http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...
- iOS学习——UIView的研究
在iOS开发中,我们知道有一个共同的基类——NSObject,但是对于界面视图而言,UIView是非常重要的一个类,UIView是很多视图控件的基类,因此,对于UIView的学习闲的非常有必要.在iO ...
随机推荐
- HTML标签理解
基础回顾 1:<!DOCTYPE HTML> 这个我们都不陌生,它是文档说明,在html页面的第一行就写的是这个.在 html5中只有一个,大小写不敏感.是便于浏览器识别文档类型. 2:& ...
- 【原创】jQuery 仿百度输入标签插件
1.先上效果图 2.调用方式 <link href="/Styles/tagsinput.css" rel="stylesheet" type=" ...
- easyui-datagrid自动合并行
1.目标 1.1表格初始化完成后,已经自动合并好需要合并的行: 1.2当点击字段排序后,重新进行合并: 2.实现 2.1 引入插件 /** * author ____′↘夏悸 * create dat ...
- C# 6.0的字典(Dictionary)的语法
在C# 6.0,当我们使用Dictionary时,我们可以使用新语法,来去简化程序以提高效率. public Dictionary<string, object> OldToolLocat ...
- 走进异步世界-犯傻也值得分享:ConfigureAwait(false)使用经验分享
在上周解决“博客程序异步化改造之后遭遇的性能问题”的过程中,我们干了一件自以为很有成就感的事——在表现层(MVC与WebForms)将所有使用await的地方都加上了ConfigureAwait(fa ...
- MVP 2015社区大讲堂之:在ASP.NET应用中执行后台任务
昨天下午,在微软的MVP 2015社区大讲堂上给大家分享了一个题目:在ASP.NET应用中执行后台任务.这是一点都不高大上,并且还有点土气的技术分享.不过我相信很多人都遇到过这样的问题. 虽然是一个很 ...
- WCF在编译出现 “错误 3 命令“时解决
如果你遇到了下面问题解决方案很简单,以管理员身份运行VS就OK了. 错误 3 命令“ mkdir %SystemDrive%\inetpub\wwwroot\servicemodelsamples m ...
- jquery表单对象属性选择器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Android使用SAX解析XML(3)
主界面MainActivity.java: package com.hzhi.my_sax; import java.util.ArrayList; import android.os.Bundle; ...
- Map遍历两种方式
Java代码 Map<String,String> map=new HashMap<String,String>(); map.put("username" ...