想来很多童鞋的项目中都有类似qq空间回复这样的功能,楼主小白不会,上网查了查也没找到合适的demo,于是乎自己用label写了一个回复板,因为楼主的项目中并不需要点击某一行回复去回去其他人,一个下例子供大家参考,大神勿喷,废话不多说,上思路。
这里只说一下回复那块,我是用的for循环创建的label,然后改变他们的frame
我们需要这样一个属性来获得每一个label的位置 然后用这个属性记录创建的每一个label的位置
// for循环创建label的时候上一个label最下方高度
@property(nonatomic,assign)CGFloatlabelY;
下边是.m里边的代码
NSArray* array =@[@"666:谁说的啊谁说的啊谁说的啊谁说的谁说的啊谁说的啊谁说的啊谁说的",@"小明:-阿尔伯特.爱因斯坦"];
for(int i =0; i<2; i++) {
UILabel* repeatLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,5+(5+15)*(i%2),ScreenWidth-20,15)];
//从第二个label开始从新计算他们的x坐标
if(i>0) {
CGRect frame = repeatLabel.frame;
frame.origin.y=_labelY;
repeatLabel.frame= frame;
}
repeatLabel.font=FontThin(14.0f);
repeatLabel.text= array[i];
repeatLabel.numberOfLines=0;
//下边是一个宏,计算一段文字的高度的,大家都懂就不多说了
CGRect bounds =ceilToTextHeight(array[i],ScreenWidth-20,14.0f);
NSInteger height;
height =ceil(bounds.size.height);
NSLog(@"-------%ld",height);
//这里再次给每一个label的frame赋值,就可以把他们放到正确的位置了
CGRect finalLabelFrame = repeatLabel.frame;
finalLabelFrame.size.height= height;
repeatLabel.frame= finalLabelFrame;
//这里是记录每一个label的最下方位置作为下一个label的x坐标
self.labelY=CGRectGetMaxY(repeatLabel.frame);
[self.contentView addSubview:repeatLabel];
}
大致思路就是这样了,希望能帮到希望帮助的人。ios之路且行且珍惜。