weChat聊天发送图片带有小尖角的实现

1.#import <UIKit/UIKit.h>
2.
3.@interface JKShapeImage : UIView
4.
5.@property (nonatomic,strong) UIImage *image;
6.
7.@property (nonatomic,getter=isOnLeft,assign) BOOL onLeft;
8.
9.@end
1.#import "JKShapeImage.h"
2.
3.@interface JKShapeImage ()
4.{
5. CAShapeLayer *maskLayer;
6. CALayer *contentLayer;
7.}
8.@end
9.
10.@implementation JKShapeImage
11.
12.-(instancetype)initWithFrame:(CGRect)frame{
13. if (self = [super initWithFrame:frame]) {
14. [self setShapeMask];
15. }
16. return self;
17.}
18.
19.-(void)setFrame:(CGRect)frame{
20. [super setFrame:frame];
21.}
22.
23.-(void)setShapeMask{
24. maskLayer = [CAShapeLayer layer];
25. maskLayer = [CAShapeLayer layer];
26. maskLayer.fillColor = [UIColor blackColor].CGColor;
27. maskLayer.strokeColor = [UIColor clearColor].CGColor;
28. maskLayer.frame = self.bounds;
29. maskLayer.contentsCenter = CGRectMake(0.65, 0.65, 0.2, 0.2);
30. maskLayer.contentsScale = [UIScreen mainScreen].scale; //非常关键设置自动拉伸的效果且不变形
31.
32. CGFloat w = self.bounds.size.width;
33. CGFloat h = self.bounds.size.height;
34.
35. UIBezierPath *path = [UIBezierPath bezierPath];
36. if (self.isOnLeft) {
37. [path moveToPoint:CGPointMake(9, 0)];
38. [path addLineToPoint:CGPointMake(w, 0)];
39. [path addLineToPoint:CGPointMake(w, h)];
40. [path addLineToPoint:CGPointMake(9, h)];
41. [path addLineToPoint:CGPointMake(9, 25)];
42. [path addLineToPoint:CGPointMake(0, 20)];
43. [path addLineToPoint:CGPointMake(9, 15)];
44. [path addLineToPoint:CGPointMake(9, 0)];
45. }else{
46. [path moveToPoint:CGPointMake(0, 0)];
47. [path addLineToPoint:CGPointMake(w - 9, 0)];
48. [path addLineToPoint:CGPointMake(w - 9, 15)];
49. [path addLineToPoint:CGPointMake(w, 20)];
50. [path addLineToPoint:CGPointMake(w - 9, 25)];
51. [path addLineToPoint:CGPointMake(w - 9, h)];
52. [path addLineToPoint:CGPointMake(0, h)];
53. [path addLineToPoint:CGPointMake(0, 0)];
54. }
55. maskLayer.path = path.CGPath;
56.
57.
58. contentLayer = [CALayer layer];
59. contentLayer.mask = maskLayer;
60. contentLayer.frame = self.bounds;
61. [self.layer addSublayer:contentLayer];
62.
63.}
64.
65.-(void)setImage:(UIImage *)image{
66. _image = image;
67. contentLayer.contents = (__bridge id)image.CGImage;
68.}
  • 实现效果
 

weChat聊天发送图片带有小尖角的实现的更多相关文章

  1. 在类似qq或者微信聊天中。如何根据不同的手机发送图片

    原文:在类似qq或者微信聊天中.如何根据不同的手机发送图片   前一段时间,公司自己要求做多客服开发,但是对于发送图片这一块,当时很苦恼,我用自己的手机(米2)测试,不管是本地,还是云相册,最新照片. ...

  2. IM聊天教程:发送图片/视频/语音/表情

    经常有朋友问起,如何在IM即时通讯中实现发送图片.视频.语音和表情? 为此,小编特意写了一个vue版本的Demo,实现了图片视频文件和表情的的发送,参考这个Demo源代码,相信你就可以轻松的用Unia ...

  3. [Asp.net 开发系列之SignalR篇]专题四:使用SignalR实现发送图片

    一.引言 在前一篇博文已经介绍了如何使用SignalR来实现聊天室的功能,在这篇文章中,将实现如何使用SignalR来实现发送图片的功能. 二.实现发送图片的思路 我还是按照之前的方式来讲述这篇文章, ...

  4. 微信PC客户端无法发送图片,怎么解决?

    今天登陆电脑的微信客户端,无法发送截图图片,该怎么办? 解决方法 1.在任务栏找到程序,右键找到设置

  5. 【小梅哥FPGA进阶教程】串口发送图片数据到SRAM在TFT屏上显示

    十五.串口发送图片数据到SRAM在TFT屏上显示 之前分享过rom存储图片数据在TFT屏上显示,该方法只能显示小点的图片,如果想显示TFT屏幕大小的图片上述方法rom内存大小不够.小梅哥给了个方案,利 ...

  6. python使用post请求发送图片并接受图片

    图像读取编码与反编码: import requests import json import numpy as np import cv2 import base64 # 首先将图片读入 # 由于要发 ...

  7. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(三) 之 实现单聊,群聊,发送图片,文件。

    上篇讲解了如何搭建聊天服务器,以及客户端js怎么和layui的语法配合.服务器已经连接上了,那么聊天还会远吗? 进入正题,正如上一篇提到的我们用 Client.Group(groupId)的方法向客户 ...

  8. php://input解决APP发送图片问题

    今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数! 以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说) 1.APP发1.jpg,而且带有 ...

  9. 第五十八篇、iOS 微信聊天发送小视频的秘密

    对于播放视频,大家应该一开始就想到比较方便快捷使用简单的MPMoviePlayerController类,确实用这个苹果官方为我们包装好了的 API 确实有很多事情都不用我们烦心,我们可以很快的做出一 ...

随机推荐

  1. HDFS文件系统基本文件命令、编程读写HDFS

    基本文件命令: 格式为:hadoop fs -cmd <args> cmd的命名通常与unix对应的命令名相同.例如,文件列表命令: hadoop fs -ls 1.添加目录和文件 HDF ...

  2. 【HDOJ】3592 World Exhibition

    基础差分约束. /* 3592 */ #include <iostream> #include <algorithm> #include <queue> #incl ...

  3. ECC内存

    ECC内存,即应用了能够实现错误检查和纠正技术(ECC)的内存条.一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定.ECC是“Error Checking and Corre ...

  4. Microsoft Windows 远程权限提升漏洞(CVE-2013-3175)(MS13-062)

    漏洞版本: Microsoft Windows XP Microsoft Windows Vista Microsoft Windows Server 2008 Microsoft Windows R ...

  5. Hibernate(三)Hibernate 配置文件

    在上次的博文Hibernate(二)Hibernate实例我们已经通过一个实例的演示对Hibernate 的基本使用有了一个简单的认识,这里我们在此简单回顾一下Hibernate框架的使用步骤. Hi ...

  6. HDOJ 2011 多项式求和

    Problem Description 多项式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + - 现在请你求出该多项式的前n项的和. Input 输入数据由2行组成, ...

  7. [工具] slf4j-api、slf4j-log4j12以及log4j之间的关系

    几乎在每个jar包里都可以看到log4j的身影,在多个子工程构成项目中,slf4j相关的冲突时不时就跳出来让你不爽,那么slf4j-api.slf4j-log4j12还有log4j是什么关系?     ...

  8. 第二十三章、软件安装: RPM, SRPM 与 YUM 功能

    SRPM 的使用 : rpmbuild 包含Source code 的 SRPM 新版的 rpm 已经将 RPM 与 SRPM 的命令分开了,SRPM 使用的是 rpmbuild 这个命令,而不是 r ...

  9. Telephone directory - SGU 127(水)

    题目大意:有一个电话簿,每页最多纪录K行电话,现在有N个电话要记录在电话薄上,要求同页的电话号码的首位要相同,电话簿的前两页是纪录的别的东西,问最少需要多少页电话簿. 分析:直接求首位数字有多少个即可 ...

  10. HTTP协议的特点

    HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式.2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POST.每种方法规定了客户与服务器联系的 ...