Swift/OC 为View或ImageView设置聊天消息的小三角
发布时间:2020-12-14 07:03:00 所属栏目:百科 来源:网络整理
导读:Swift代码 override func viewDidLoad() { super . viewDidLoad() //UIImageView let showView = UIImageView(frame: CGRectMake( 100 , 100 , 100 )) showView . image = UIImage(named: "Snip20160422_3" ) showView . layer . mask = test(showView) self
Swift代码override func viewDidLoad() {
super.viewDidLoad()
//UIImageView
let showView = UIImageView(frame: CGRectMake(100,100,100))
showView.image = UIImage(named: "Snip20160422_3")
showView.layer.mask = test(showView)
self.view.addSubview(showView)
//UIView
let blankView = UIView(frame: CGRectMake(250,100))
blankView.backgroundColor = UIColor.greenColor()
blankView.layer.mask = test(blankView)
self.view.addSubview(blankView)
}
///把设置小三角
func test(showView: UIView) -> CAShapeLayer {
let viewWidth = CGFloat(CGRectGetWidth(showView.frame))
let viewHeight = CGFloat(CGRectGetHeight(showView.frame))
//所占的宽度,整个view所占的宽度不会变,已经被制定,所以这个宽度会占用整个view的宽度,
let rightSpace: CGFloat = 10
//距离顶部的距离
let topSpace: CGFloat = 30
let point1 = CGPointMake(0,0)
let point2 = CGPointMake(viewWidth - rightSpace,0)
let point3 = CGPointMake(viewWidth - rightSpace,topSpace)
let point4 = CGPointMake(viewWidth,topSpace)
let point5 = CGPointMake(viewWidth - rightSpace,topSpace + 10)
let point6 = CGPointMake(viewWidth - rightSpace,viewHeight)
let point7 = CGPointMake(0,viewHeight)
let path = UIBezierPath()
path.moveToPoint(point1)
path.addLineToPoint(point2)
path.addLineToPoint(point3)
path.addLineToPoint(point4)
path.addLineToPoint(point5)
path.addLineToPoint(point6)
path.addLineToPoint(point7)
let layer = CAShapeLayer()
layer.path = path.CGPath
return layer
}
}
OC代码- (void)viewDidLoad {
[super viewDidLoad];
UIView *blankView = [[UIView alloc] initWithFrame:CGRectMake(100,100)];
blankView.backgroundColor = [UIColor redColor];
blankView.layer.mask = [self testWithView:blankView];
[self.view addSubview:blankView];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(250,100)];
imageView.image = [UIImage imageNamed:@"Snip20160422_3"];
imageView.layer.mask = [self testWithView:blankView];
[self.view addSubview:imageView];
}
- (CAShapeLayer *)testWithView:(UIView *)view
{
CGFloat viewWidth = CGRectGetWidth(view.frame);
CGFloat viewHeight = CGRectGetHeight(view.frame);
CGFloat rightSpace = 10;
CGFloat topSpace = 15;
CGPoint point1 = CGPointMake(0,0);
CGPoint point2 = CGPointMake(viewWidth-rightSpace,0);
CGPoint point3 = CGPointMake(viewWidth-rightSpace,topSpace);
CGPoint point4 = CGPointMake(viewWidth,topSpace);
CGPoint point5 = CGPointMake(viewWidth-rightSpace,topSpace+10.);
CGPoint point6 = CGPointMake(viewWidth-rightSpace,viewHeight);
CGPoint point7 = CGPointMake(0,viewHeight);
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:point1];
[path addLineToPoint:point2];
[path addLineToPoint:point3];
[path addLineToPoint:point4];
[path addLineToPoint:point5];
[path addLineToPoint:point6];
[path addLineToPoint:point7];
[path closePath];
CAShapeLayer *layer = [CAShapeLayer layer];
layer.path = path.CGPath;
return layer;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 来自静态单例内联初始化的NullReferenceException
- VB.net学习笔记(二十五)Threading 命名空间
- C#实现的ACCESS数据库操作类完整实例
- Flash CS6 专业版破解教程、Flash CS6 激活序列号、破解补丁
- ruby-on-rails – 如何在生产之前捕获rails资产管道中的错误
- Flexbox wkhtmltopdf渲染问题
- Oracle EBS json
- JwtUser JwtAuthenticationEntryPoint JwtAuthorizationTok
- flex变量命名
- ruby-on-rails – simple_form f.hidden_??field有效,为什么