weChat聊天发送图片带有小尖角的实现
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聊天发送图片带有小尖角的实现的更多相关文章
- 在类似qq或者微信聊天中。如何根据不同的手机发送图片
原文:在类似qq或者微信聊天中.如何根据不同的手机发送图片 前一段时间,公司自己要求做多客服开发,但是对于发送图片这一块,当时很苦恼,我用自己的手机(米2)测试,不管是本地,还是云相册,最新照片. ...
- IM聊天教程:发送图片/视频/语音/表情
经常有朋友问起,如何在IM即时通讯中实现发送图片.视频.语音和表情? 为此,小编特意写了一个vue版本的Demo,实现了图片视频文件和表情的的发送,参考这个Demo源代码,相信你就可以轻松的用Unia ...
- [Asp.net 开发系列之SignalR篇]专题四:使用SignalR实现发送图片
一.引言 在前一篇博文已经介绍了如何使用SignalR来实现聊天室的功能,在这篇文章中,将实现如何使用SignalR来实现发送图片的功能. 二.实现发送图片的思路 我还是按照之前的方式来讲述这篇文章, ...
- 微信PC客户端无法发送图片,怎么解决?
今天登陆电脑的微信客户端,无法发送截图图片,该怎么办? 解决方法 1.在任务栏找到程序,右键找到设置
- 【小梅哥FPGA进阶教程】串口发送图片数据到SRAM在TFT屏上显示
十五.串口发送图片数据到SRAM在TFT屏上显示 之前分享过rom存储图片数据在TFT屏上显示,该方法只能显示小点的图片,如果想显示TFT屏幕大小的图片上述方法rom内存大小不够.小梅哥给了个方案,利 ...
- python使用post请求发送图片并接受图片
图像读取编码与反编码: import requests import json import numpy as np import cv2 import base64 # 首先将图片读入 # 由于要发 ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(三) 之 实现单聊,群聊,发送图片,文件。
上篇讲解了如何搭建聊天服务器,以及客户端js怎么和layui的语法配合.服务器已经连接上了,那么聊天还会远吗? 进入正题,正如上一篇提到的我们用 Client.Group(groupId)的方法向客户 ...
- php://input解决APP发送图片问题
今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数! 以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说) 1.APP发1.jpg,而且带有 ...
- 第五十八篇、iOS 微信聊天发送小视频的秘密
对于播放视频,大家应该一开始就想到比较方便快捷使用简单的MPMoviePlayerController类,确实用这个苹果官方为我们包装好了的 API 确实有很多事情都不用我们烦心,我们可以很快的做出一 ...
随机推荐
- 【POJ】1056 IMMEDIATE DECODABILITY
字典树水题. #include <cstdio> #include <cstring> #include <cstdlib> typedef struct Trie ...
- Android开源项目整理:个性化空间View篇(看遍论坛千万篇,不看此篇也枉然)
个性化View控件虽然你在多处可以找到 但是这个整理的不可以不看欧: 主要介绍不错的个性化View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridVi ...
- 项目升级,为了热更新使用lua。
现在发行商的要求越来越变态,必须要求程序热更新,以应对上线后的bug及时调整,我们目标锁定在 ulua, slua,(也对L#感兴趣过),一开始对 ulua 很困惑,unity 的 assetstor ...
- XCode4 下制作Framework的方法
http://www.cocoachina.com/bbs/read.php?tid-75680-page-1.html
- asterisk manager api 配置 (manager.conf)
http://blog.csdn.net/niino/article/details/5748805 要激活AMI,需要在/etc/asterisk/manager.conf中,[general]块下 ...
- Ubuntu 下安装opencv 编译后执行找不到库
在ubuntu下编译opencv程序后,执行报下面到错误:error while loading shared libraries: libopencv_core.so.2.4: cannot ope ...
- 415. Add Strings
没什么限定的话,先翻转,在一位一位加,记得进位就行了.. public class Solution { public String addStrings(String num1, String nu ...
- 11个让你吃惊的Linux终端命令
- MFC编程小技巧——强制杀死进程
在某些应用场合下,我们可能需要在启动A进程启动时关闭进程B.MFC下该如何做呢?以下是我项目中用到的代码: int KillProcess(DWORD Pid) { //打开进程得到进程句柄 HAND ...
- ssss
18:15 2013/6/18 未结束的事情1 应用API接口切换2 03in.com 项目管理授权 软件中不成功3 党校考核时间 段列出所有 10:51 2013/6/20 daili 应用修改1 ...