- 浏览: 1476462 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
参考http://ios.9tech.cn/news/2013/1111/38520.html
修改
配置绑定
修改
配置绑定
#import <UIKit/UIKit.h> @interface ViewController : UIViewController { IBOutlet UITableView *tableViewList; IBOutlet UITextField *messageTxt; } @property (nonatomic, strong) NSMutableArray *resultArray; @end
// // ViewController.m // BubbleDemo // // Created by xiao7 on 14/10/19. // Copyright (c) 2014年 killinux. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (IBAction)sendBubbleMessage:(id)sender { NSString *thistext = messageTxt.text; NSLog(@"sendBubbleMessage:%@",thistext); messageTxt.text=nil; NSDictionary *dict8 = [NSDictionary dictionaryWithObjectsAndKeys:@"weixin",@"name",thistext,@"content", nil]; [_resultArray addObject:dict8]; [tableViewList reloadData]; } - (void)viewDidLoad { [super viewDidLoad]; NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"weixin",@"name",@"这是一个测试",@"content", nil]; NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"haoning",@"name",@"hello",@"content", nil]; NSDictionary *dict7 = [NSDictionary dictionaryWithObjectsAndKeys:@"weixin",@"name",@",长数据测试。",@"content", nil]; _resultArray = [NSMutableArray arrayWithObjects:dict,dict1, nil]; [_resultArray addObject:dict7]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //泡泡文本 - (UIView *)bubbleView:(NSString *)text from:(BOOL)fromSelf withPosition:(int)position{ //计算大小 UIFont *font = [UIFont systemFontOfSize:14]; CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(180.0f, 20000.0f) lineBreakMode:NSLineBreakByWordWrapping]; // build single chat bubble cell with given text UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero]; returnView.backgroundColor = [UIColor clearColor]; //背影图片 UIImage *bubble = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fromSelf?@"SenderAppNodeBkg_HL":@"ReceiverTextNodeBkg" ofType:@"png"]]; UIImageView *bubbleImageView = [[UIImageView alloc] initWithImage:[bubble stretchableImageWithLeftCapWidth:floorf(bubble.size.width/2) topCapHeight:floorf(bubble.size.height/2)]]; NSLog(@"%f,%f",size.width,size.height); //添加文本信息 UILabel *bubbleText = [[UILabel alloc] initWithFrame:CGRectMake(fromSelf?15.0f:22.0f, 20.0f, size.width+10, size.height+10)]; bubbleText.backgroundColor = [UIColor clearColor]; bubbleText.font = font; bubbleText.numberOfLines = 0; bubbleText.lineBreakMode = NSLineBreakByWordWrapping; bubbleText.text = text; bubbleImageView.frame = CGRectMake(0.0f, 14.0f, bubbleText.frame.size.width+30.0f, bubbleText.frame.size.height+20.0f); if(fromSelf) returnView.frame = CGRectMake(320-position-(bubbleText.frame.size.width+30.0f), 0.0f, bubbleText.frame.size.width+30.0f, bubbleText.frame.size.height+30.0f); else returnView.frame = CGRectMake(position, 0.0f, bubbleText.frame.size.width+30.0f, bubbleText.frame.size.height+30.0f); [returnView addSubview:bubbleImageView]; [returnView addSubview:bubbleText]; return returnView; } //泡泡语音 - (UIView *)yuyinView:(NSInteger)logntime from:(BOOL)fromSelf withIndexRow:(NSInteger)indexRow withPosition:(int)position{ //根据语音长度 int yuyinwidth = 66+fromSelf; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.tag = indexRow; if(fromSelf) button.frame =CGRectMake(320-position-yuyinwidth, 10, yuyinwidth, 54); else button.frame =CGRectMake(position, 10, yuyinwidth, 54); //image偏移量 UIEdgeInsets imageInsert; imageInsert.top = -10; imageInsert.left = fromSelf?button.frame.size.width/3:-button.frame.size.width/3; button.imageEdgeInsets = imageInsert; [button setImage:[UIImage imageNamed:fromSelf?@"SenderVoiceNodePlaying":@"ReceiverVoiceNodePlaying"] forState:UIControlStateNormal]; UIImage *backgroundImage = [UIImage imageNamed:fromSelf?@"SenderVoiceNodeDownloading":@"ReceiverVoiceNodeDownloading"]; backgroundImage = [backgroundImage stretchableImageWithLeftCapWidth:20 topCapHeight:0]; [button setBackgroundImage:backgroundImage forState:UIControlStateNormal]; UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(fromSelf?-30:button.frame.size.width, 0, 30, button.frame.size.height)]; label.text = [NSString stringWithFormat:@"%d''",logntime]; label.textColor = [UIColor grayColor]; label.font = [UIFont systemFontOfSize:13]; label.textAlignment = NSTextAlignmentCenter; label.backgroundColor = [UIColor clearColor]; [button addSubview:label]; return button; } #pragma UITableView - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _resultArray.count; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSDictionary *dict = [_resultArray objectAtIndex:indexPath.row]; UIFont *font = [UIFont systemFontOfSize:14]; CGSize size = [[dict objectForKey:@"content"] sizeWithFont:font constrainedToSize:CGSizeMake(180.0f, 20000.0f) lineBreakMode:NSLineBreakByWordWrapping]; return size.height+44; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; cell.selectionStyle = UITableViewCellSelectionStyleNone; }else{ for (UIView *cellView in cell.subviews){ [cellView removeFromSuperview]; } } NSDictionary *dict = [_resultArray objectAtIndex:indexPath.row]; //创建头像 UIImageView *photo ; if ([[dict objectForKey:@"name"]isEqualToString:@"haoning"]) { photo = [[UIImageView alloc]initWithFrame:CGRectMake(320-60, 10, 50, 50)]; [cell addSubview:photo]; photo.image = [UIImage imageNamed:@"photo1"]; if ([[dict objectForKey:@"content"] isEqualToString:@"0"]) { [cell addSubview:[self yuyinView:1 from:YES withIndexRow:indexPath.row withPosition:65]]; }else{ [cell addSubview:[self bubbleView:[dict objectForKey:@"content"] from:YES withPosition:65]]; } }else{ photo = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 50, 50)]; [cell addSubview:photo]; photo.image = [UIImage imageNamed:@"photo"]; if ([[dict objectForKey:@"content"] isEqualToString:@"0"]) { [cell addSubview:[self yuyinView:1 from:NO withIndexRow:indexPath.row withPosition:65]]; }else{ [cell addSubview:[self bubbleView:[dict objectForKey:@"content"] from:NO withPosition:65]]; } } return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { } @end
发表评论
-
facebook的socketrocket总结
2018-03-19 13:36 1471最近看了开源的网易的demo https://netease. ... -
使用websocket,双ibeacons判断方向
2014-12-16 04:08 2027只调用ibeacon的接口 // // ViewCon ... -
ios的页面跳转
2014-12-03 17:30 1380一种通过导航,一种直 ... -
打包ipa
2014-11-14 23:10 7771.新建一个文件夹命名为:Payload 2.将buid生成的 ... -
理解iOS7的Multipeer Connectivity框架
2014-11-13 23:39 918例子可跑 http://www.oschina.net/tr ... -
ios指南针
2014-10-25 17:06 1092参考http://blog.sina.com.cn/s/blo ... -
linux下编译objectc
2014-10-23 01:24 894编译静态库给ios使用 http://www.tuicool. ... -
ios加速计和陀螺仪
2014-10-22 23:03 1247ios设备中有的加速计可以测量出加速度和重力。陀螺仪可用于确定 ... -
ios仿微信的demo
2014-10-20 00:31 2307610月19日闲的蛋疼,做了个 仿微信的聊天工具 git地址:h ... -
ios8的tableView使用
2014-10-18 20:34 871ios8是main.storyboard 不是 ... -
ios的opencv的helloworld
2014-10-12 23:38 968xcode6, 学习的源码在 http://opencv.or ... -
ios opencv的一些资源
2014-10-11 00:08 807opencv for ios build http://ww ... -
ios客户端websocket的helloworld
2014-10-09 02:11 23188ios8,xcode6 https://github.com/ ... -
ios8的定位,蓝牙与ios7的区别
2014-10-06 23:27 3656以前程序的地理定位功能在iOS8 版上不能工作了(也可能其 ... -
ios的helloworld 2
2014-09-09 21:51 1306参考视频: www.imooc.com/learn/149 S ... -
ios的helloworld
2014-09-08 19:51 708参考http://www.macx.cn/thread-210 ... -
生成ipa 这个是自己总结的,ios5.1.1越狱系统,xcode4.3.3可用
2012-07-29 20:44 1983最有用的一段 export CODESIGN_ALLOCA ... -
ios上使用gcc
2012-07-18 23:21 3250安装network-cmds apptitude iphone ... -
m3u8在windows上预览
2012-06-12 14:25 7024<html> <head> ... -
cocoahttpserver
2012-03-21 22:19 1948https://github.com/robin/cocoa- ...
相关推荐
【自制微信(大学生项目)】是一个适合大学生进行安卓平台应用开发的项目,旨在模拟微信的基本功能,提供一个学习和实践的平台。这个项目对于初学者来说,是一个很好的起点,可以帮助他们理解和掌握Android应用开发...
一个自制且无外部依赖的、用于原生微信小程序的左右滑动卡片选择喜好的UI组件。 类似 Tinder、探探 和 Aloha 等软件的社交推荐选择交互操作。 本组件基于原生微信元素和JS实现,不依赖于第三方库。
微信小程序提供了丰富的内置组件,如view、button、image等,开发者可以利用这些组件快速构建UI。在节拍器的实现中,可能用到button(用于触发节拍)和audio(播放节拍声音)等组件。 5. **音频处理**: 节拍器的...
总的来说,实现微信表情功能涉及了数据结构设计、网络编程、图像处理、UI设计等多个领域,需要开发者具备扎实的编程基础和良好的工程实践。这个资源很可能包含了一些核心的代码示例和指导,帮助开发者理解并实现类似...
此小程序适合流量主引流,赚广告费,适合广流量主,适合流量主。 采用云开发,无需服务器,无需域名。小程序里插入banner广告,插屏广告,视频广告,激励式广告。邀请好友获取抽奖机会,或者观看激励式广告获取抽奖...
1. **微信分享**:微信分享是移动应用中常见的社交功能,它允许用户将内容(如文字、图片、链接等)分享到微信朋友圈或与微信好友进行互动。实现微信分享通常需要集成微信SDK,并调用微信提供的API来构建分享内容和...
必然要有好友的战绩比分,然后再做排序,最后将数据呈现在UI上 , 可以分为下面几个步骤: 保存每个用户的分数 获取好友列表,并获取好友的分数 渲染排行榜 (此图片来源于网络,如有侵权,请联系删除! ) 保存每个用户的...
总之,实现类似易信、QQ、微信、陌陌等应用的表情功能,涉及数据库操作、UI设计、图片处理等多个技术领域,需要综合运用多种Android开发技巧。通过学习和研究`FaceDemo`,开发者可以更好地理解和掌握这一过程。
3. 针对“美食菜谱”主题,可能需要调用微信的API接口,例如上传用户自制菜谱图片,使用wx.chooseImage和wx.uploadFile。 四、事件处理与用户交互 1. 通过绑定事件处理函数,如bindtap、bindinput等,实现用户点击...
【标题】"sourcemap2.zip"是一个包含微信小程序代码的压缩文件,该小程序名为“自制天气预报小程序”,已成功发布并可供用户在微信平台上通过搜索功能直接使用。这个项目利用了百度地图的API来获取和展示天气预报...
首先,小组件(Component)是微信小程序提供的一种可复用的 UI 组件,它能够封装特定的功能或者界面,方便在多个页面中进行调用。在项目中,我们可以将一些通用的元素,如导航栏、按钮等封装为组件,以减少代码量,...
10. **UI设计**:Unity的UI系统(UI Toolkit或旧版Canvas)允许创建各种用户界面元素,如得分显示、游戏提示和按钮。飞刀游戏可能包含一个启动按钮、得分面板和重玩选项。 通过研究这个源码,开发者不仅可以学习到...
7. **支付集成**: 电影票的购买可能涉及到在线支付,项目可能集成了支付宝、微信支付等第三方支付接口,这需要处理支付回调、事务一致性等问题。 8. **测试与部署**: 使用JUnit进行单元测试,确保代码质量;而...
_______ _ _ _ _ _ __ _ _ _ ___ |__ __| | | | \ | | | | (_)/ _(_) | | (_) |__ \ | | ___ __ _ ___| |_| \| | ___ | |_ _| |_ _ ___ __ _| |_ _ ___ _ __ ___ __ __ ) | | |/ _ \ /
5. **支付集成**:如果要实现在线支付功能,需要集成如微信支付、支付宝等第三方支付SDK,这涉及到安全和交易处理。 6. **推送通知**:为了实时更新订单状态或促销信息,可以集成极光推送、个推等服务,实现消息推...