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. swiper去除滑动设置

    有时候使用swiper并不想让它滑动,怎么设置呢? 1.noSwiping设为true 2.在slide上(或其他元素)增加类名'swiper-no-swiping',使该slide无法拖动. 案例: ...

  2. dotfuscator使用方法

    dotfuscator如何对.net程序进行混淆保护对于程序代码的保护,网上有很多资料,有的说混淆,有的说加密,我比较支持混淆的方法,这样可以让反编译劳工,头晕一阵子,哈哈开玩笑.对于加密如果不是不得 ...

  3. 像素,分辨率,PPI(像素密度),BPP 扫盲

    像素于分辨率 像素,又称画素,为图像显示的基本单位,译自英文“pixel”,pix是英语单词picture的常用简写,加上英语单词“元素”element,就得到pixel,故“像素”表示“图像元素”之 ...

  4. hdu 4280 最大流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4280 #pragma comment(linker, "/STACK:1024000000, ...

  5. git submodule的操作

    对于有submodule的库,检出的方法是: git clone https://github.com/BelledonneCommunications/linphone-android.git -- ...

  6. lost connection to mysql server reading initial communication packet

  7. 爬虫技术浅析 | z7y Blog

    爬虫技术浅析 | z7y Blog 爬虫技术浅析

  8. [置顶] SpecDD系列:“完成” 的定义

    在当今充满变数和快节奏的大环境下,一个产品的上市时间已经成为产品成功与否的重要因素.如果对于“完成”没有一个清晰的定义,那么很可能会遭遇产品延期,风险,并且增加公司成本. “完成的定义”也被俗称为Do ...

  9. (组合数学3.1.1.1)POJ 1146 ID Codes(字典序法)

    /* * POJ_1146.cpp * * Created on: 2013年10月8日 * Author: Administrator */ #include <iostream> #i ...

  10. 2016 GDCPC 省赛总结

    大神们说,要多写博客,多总结,于是很久之前就开了博客,可是一篇文章都没有写,太懒也是,没什么时间也是.现在省赛结束了,也是时候好好总结一下了. 本来一开始,三个人对拿铜牌是很有把握的,在比赛一开始A了 ...