文档章节

[10秒学会] - iOS 消息气泡

赵大财
 赵大财
发布于 2016/05/17 23:17
字数 480
阅读 1001
收藏 3

效果图:  数据用的就是小马哥的plist 气泡也是   我这个是纯代码


旧的  -_-!!  朋友说没模型 cell高度也没计算           这个是修改版的样子

                            


code1 这个是旧版

 NSString * str = @"赵大财10秒让你学会写IOS消息气泡 大财10秒让你学会写IOS消息气泡 大财10秒让你学会写IOS消息气泡" ;
        
        [self.contentView addSubview:self.btn];
        [self.btn autoSetDimension:ALDimensionWidth toSize:200]; //首先设置宽度 这里用的是第三方约束
        [self.btn setTitle:str forState:UIControlStateNormal];
        self.btn.titleLabel.font = [UIFont systemFontOfSize:14];
        self.btn.titleLabel.numberOfLines = 0;
        [self.btn layoutIfNeeded]; //这里刷新下 不然得不到高度
        [self.btn autoSetDimension:ALDimensionHeight toSize:self.btn.titleLabel.frame.size.height+40];
        [self.btn autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:40];
        [self.btn autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:40];
        self.btn.contentEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 20);
        UIImage *img = [UIImage imageNamed:@"chat_send_nor"];
        img = [img stretchableImageWithLeftCapWidth:img.size.width*0.5 topCapHeight:img.size.height*0.5];// 这里居中拉伸
        [self.btn setBackgroundImage:img forState:UIControlStateNormal];
        self.contentView.backgroundColor = RGBRandomColor;

code 2 这个是新版

 CGSize titleSize =[messageModel.text sizeWithFontWidth:[UIFont systemFontOfSize:15]];
    CGFloat paowidth = titleSize.width>=200?200:titleSize.width;
    
    
    [self.contentView addSubview:self.btn];
    self.btn.width = paowidth+40;   //这里 都换成frame形式了  

    [self.btn setTitle:messageModel.text forState:UIControlStateNormal];
    self.btn.titleLabel.font = [UIFont systemFontOfSize:15];
    self.btn.titleLabel.numberOfLines = 0;
    [self.btn layoutIfNeeded]; //这里刷新下 不然得不到高度

    
    self.btn.height = self.btn.titleLabel.frame.size.height+30;
    self.btn.x= YLScreenW - paowidth - 40;
    self.btn.y =0;
    UIImage *img = [UIImage imageNamed:@"chat_send_nor"];
    img = [img stretchableImageWithLeftCapWidth:img.size.width*0.5 topCapHeight:img.size.height*0.5];// 这里居中拉伸
    [self.btn setBackgroundImage:img forState:UIControlStateNormal];
    self.contentView.backgroundColor = RGBRandomColor;
    
    messageModel.cellHeight = self.btn.titleLabel.frame.size.height+30;

model:

@property (nonatomic, strong) NSString *text;
@property (nonatomic, strong) NSString *time;


/** cell的高度 */
@property (nonatomic, assign) CGFloat cellHeight;

VC:

#import "messageTableViewCell.h"

@interface MeIndexViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (strong ,nonatomic)UITableView *tableView;

@property (strong,nonatomic) NSArray *dacaiMessageModel;

@end


@implementation MeIndexViewController


- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor YLColorGrayBg];
    self.navigationItem.title = @"我的";
    
    [self.view addSubview:self.tableView];
    [self.tableView autoPinEdgesToSuperviewEdgesWithInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
    
    NSString *path = [[NSBundle mainBundle] pathForResource:@"messages.plist" ofType:nil];
    NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
    _dacaiMessageModel = [messageModel mj_objectArrayWithKeyValuesArray:dictArray];
    
    
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return _dacaiMessageModel.count;
}

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    //[messageTableViewCell ]
    messageModel * model = _dacaiMessageModel[indexPath.row];
    return model.cellHeight;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    messageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kMessageTableViewCellCellIdentifier forIndexPath:indexPath];
    
    [cell daCaiHeight:_dacaiMessageModel[indexPath.row]];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

}

- (UITableView *)tableView {
    if (!_tableView) {
        _tableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStylePlain];
        [_tableView configureForAutoLayout];
        _tableView.delegate = self;
        _tableView.dataSource = self;
        _tableView.backgroundColor = [UIColor whiteColor];
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _tableView.showsVerticalScrollIndicator = NO;
        _tableView.alwaysBounceVertical = YES;
        [_tableView registerClass:[messageTableViewCell class] forCellReuseIdentifier:kMessageTableViewCellCellIdentifier];
    }
    return _tableView;
}

 

© 著作权归作者所有

共有 人打赏支持
赵大财
粉丝 21
博文 162
码字总数 38743
作品 0
长沙
iOS实现本地通知(local notification)的简单示例

本地通知,local notification,用于基于时间行为的通知,比如有关日历或者todo列表的小应用。另外,应用如果在后台执行,iOS允许它在受限的时间内运行,它也会发现本地通知有用。比如,一个...

木木情深
2014/02/27
0
0
那些在学习iOS开发前就应该知道的事(part 1)

英文原文:Things I wish I had known before starting iOS development—Part 1 设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了。这个界面模...

TomatosX
2015/06/12
0
0
iOS与JS交互之WKWebView-WKScriptMessageHandler协议

级别:★★☆☆☆ 标签:「iOS与JS交互」「WKWebView与JS交互」「WKJSMessageHandler」 作者: Xs·H 审校: QiShare团队 先解释下标题:“iOS与JS交互”。iOS指原生代码(文章只有示例),J...

QiShare
09/02
0
0
【IOS视频教学】三个月学会IOS开发

一、windows系统下安装虚拟机-mac系统-视频教程-安装件全套下载:http://www.wyzc.com/forum/56212.html 二、史上最佳0基础Swift语言视频教程下载链接:http://www.wyzc.com/forum/56744.htm...

马洪伟
2014/12/25
0
0
开发微信H5视频秀项目遇到的坑

介绍 手头上正好有个项目,需要做一个微信端H5视频秀的一个项目,想想好像挺简单的,由两个视频组成,播放完第一个视频后点击按钮继而播放第二个视频。好了,结果微信的坑TM的多 问题排查 自...

🚲Allen
05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部