Swift/OC 为View或ImageView设置聊天气泡的小三角
2016-04-27 20:10
591 查看
Swift代码(同步到Swift3.0)
override func viewDidLoad() { super.viewDidLoad() let showView = UIImageView.init(frame: CGRect(x: 100, y: 100, width: 100, height: 100)) showView.image = UIImage(named: "Snip20161312_3") showView.layer.mask = test(showView: showView) self.view.addSubview(showView) //UIView let blankView = UIView.init(frame: CGRect(x: 250, y: 100, width: 100, height: 100)) blankView.backgroundColor = UIColor.green blankView.layer.mask = test(showView: blankView) self.view.addSubview(blankView) } ///设置小三角 func test(showView: UIView) -> CAShapeLayer { let viewWidth = CGFloat(showView.frame.width) let viewHeight = CGFloat(showView.frame.height) //所占的宽度,整个view所占的宽度不会变,已经被制定,所以这个宽度会占用整个view的宽度, let rightSpace: CGFloat = 10 //距离顶部的距离 let topSpace: CGFloat = 30 let point1 = CGPoint(x:0, y:0) let point2 = CGPoint(x:viewWidth - rightSpace, y:0) let point3 = CGPoint(x:viewWidth - rightSpace, y:topSpace) let point4 = CGPoint(x:viewWidth, y:topSpace) let point5 = CGPoint(x:viewWidth - rightSpace, y:topSpace + 10) let point6 = CGPoint(x:viewWidth - rightSpace, y:viewHeight) let point7 = CGPoint(x:0, y:viewHeight) let path = UIBezierPath() path.move(to: point1) path.addLine(to: point2) path.addLine(to: point3) path.addLine(to: point4) path.addLine(to: point5) path.addLine(to: point6) path.addLine(to: point7) let layer = CAShapeLayer() layer.path = path.cgPath return layer } }
OC代码
- (void)viewDidLoad { [super viewDidLoad]; UIView *blankView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; blankView.backgroundColor = [UIColor redColor]; blankView.layer.mask = [self testWithView:blankView]; [self.view addSubview:blankView]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(250, 100, 100, 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; }
相关文章推荐
- [原创]java局域网聊天系统
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- Android编程UI设计之GridView和ImageView的用法
- 基于Android实现随手指移动的ImageView
- Android中ImageView用法实例分析
- Android聊天工具基于socket实现
- PHP+swoole实现简单多人在线聊天群发
- c#实现多线程局域网聊天系统
- nw.js实现类似微信的聊天软件
- javascript Discuz代码中的msn聊天小功能
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift自定义iOS中的TabBarController并为其添加动画
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- javascript实现很浪漫的气泡冒出特效
- PHP+jquery+ajax实现即时聊天功能实例
- Android中基于XMPP协议实现IM聊天程序与多人聊天室
- Android程序开发之动态设置ImageView的亮度