MyException - 我的异常网
当前位置:我的异常网» Iphone » QQ空间/朋友圈类界面的筹建

QQ空间/朋友圈类界面的筹建

www.MyException.Cn  网友分享于:2013-12-07  浏览:0次
QQ空间/朋友圈类界面的搭建

类似于QQ空间的布局主要是在说说信息、点赞、回复三大部分的自适应布局上。

当我们需要搭建类似QQ空间、微信朋友圈的界面的时候,可做如下操作:

  1. 创建一个对应的model类;
  2. 创建一个对应model类的frameModel类,并将对应的model封装进这个frameModel类。frameModel类是将model对应显示的data的控件frame转换为一个可持久化的frame,这样一来,就可以在第3布容易很多;
  3. 创建一个talbleviewcell,根据 model可能显示的对象,初始化cell,并将frameModel封装进talbleviewcell。

我在这里写了一些测试的代码,大家可以参考一下。

如下是model的实现 (BasicModel 为我定义的basic类,内有归档持久化操作)

 1 #import "BasicModel.h"
 2 
 3 @interface RadioModel : BasicModel<NSCopying>
 4 /**
 5  *  内容
 6  */
 7 @property(nonatomic, copy)NSString *msgContent;
 8 /**
 9  *  昵称
10  */
11 @property(nonatomic, copy)NSString *publisherNickName;
12 /**
13  *  头像
14  */
15 @property(nonatomic, copy)NSString *publisherImg;
16 /**
17  *  时间
18  */
19 @property(nonatomic, copy)NSString *publishTime;
20 /**
21  *  评论数组 
22  */
23 @property(nonatomic, copy)NSMutableArray *commentsArray;
24 /**
25  *  点赞数组   (点赞者昵称)
26  */
27 @property(nonatomic, copy)NSMutableArray *thumbArray;
28 
29 
30 @end
View Code

 

 1 #import "RadioModel.h"
 2 #import <objc/runtime.h>
 3 
 4 @implementation RadioModel
 5 
 6 -(id)copyWithZone:(NSZone *)zone{
 7     RadioModel *model = [[RadioModel alloc] init];
 8     
 9     u_int count;
10     objc_property_t *propertyList = class_copyPropertyList([self class], &count);
11     
12     for (int index = 0; index < count; index++) {
13         objc_property_t property = propertyList[index];
14         NSString *str = [NSString stringWithUTF8String:property_getName(property)];
15         
16         id value = [self valueForKey:str];
17         [model setValue:value forKey:str];
18     }
19     
20     free(propertyList);
21     
22     return model;
23 }
24 
25 @end
View Code

 

如下是frameModel的实现:

 

 1 #import "BasicModel.h"
 2 //#import <Foundation/Foundation.h>
 3 //#import <UIKit/UIKit.h>
 4 #import "RadioModel.h"
 5 
 6 @interface RadioModelFrame : BasicModel
 7 /**
 8  *  头像尺寸
 9  */
10 @property(nonatomic, copy)NSValue *iconFrameValue;
11 /**
12  *  昵称尺寸
13  */
14 @property(nonatomic, copy)NSValue *nickNameFrameValue;
15 /**
16  *  内容尺寸
17  */
18 @property(nonatomic, copy)NSValue *contentFrameValue;
19 /**
20  *  时间尺寸
21  */
22 @property(nonatomic, copy)NSValue *timeFrameValue;
23 /**
24  *  点赞按钮的尺寸
25  */
26 @property(nonatomic, copy)NSValue *thumbBtnFrameValue;
27 /**
28  *  评论按钮的尺寸
29  */
30 @property(nonatomic, copy)NSValue *commentBtnFrameValue;
31 /**
32  *  不包含赞、评论内容的高度
33  */
34 @property(nonatomic, copy)NSString *cellHeight;
35 /**
36  *  点赞人尺寸
37  */
38 @property(nonatomic, copy)NSValue *thumbPersonFrameValue;
39 /**
40  *  评论内容尺寸
41  */
42 //@property(nonatomic, assign)NSValue *commentsFrameValue;
43 /**
44  *  评论内容数据源
45  */
46 @property(nonatomic, strong)NSMutableArray *commentsArray;
47 /**
48  *  评论内容背景
49  */
50 @property(nonatomic, copy)NSValue *commentsBackGroundFrameValue;
51 /**
52  *  评论数据
53  */
54 @property(nonatomic, strong)RadioModel *radioModel;
55 
56 @end
View Code

 

 1 #import "RadioModelFrame.h"
 2 #import "SCUtil.h"
 3 @implementation RadioModelFrame
 4 
 5 -(void)setRadioModel:(RadioModel *)radioModel{
 6     _radioModel = radioModel;
 7     
 8     float cellH;
 9     
10     //头像
11     CGFloat iconX = WIDTHINIPHONE6(10);
12     CGFloat iconY = HEIGTHINIPHONE6(5);
13     CGFloat iconH = WIDTHINIPHONE6(60);
14     CGFloat iconW = WIDTHINIPHONE6(60);
15     self.iconFrameValue = [NSValue valueWithCGRect:CGRectMake(iconX, iconY, iconW, iconH)];
16     
17     //昵称
18     CGFloat nickNameX = CGRectGetMaxX(CGRectMake(iconX, iconY, iconW, iconH)) + WIDTHINIPHONE6(5);
19     CGSize nickNameSize = [SCUtil sizeWithString:self.radioModel.publisherNickName font:HEADFONT size:CGSizeMake(SCREENWIDTH - WIDTHINIPHONE6(90), HEIGTHINIPHONE6(30))];
20     CGFloat nickNameY = iconY + HEIGTHINIPHONE6(20);
21     CGFloat nickNameW = nickNameSize.width;
22     CGFloat nickNameH = nickNameSize.height;
23     self.nickNameFrameValue = [NSValue valueWithCGRect:CGRectMake(nickNameX, nickNameY, nickNameW, nickNameH)];
24     
25     //内容内容
26     CGFloat contentX = nickNameX;
27     CGFloat contentY = CGRectGetMaxY(CGRectMake(nickNameX, nickNameY, nickNameW, nickNameH)) + HEIGTHINIPHONE6(10);
28     CGSize contentSize = [SCUtil sizeWithString:self.radioModel.msgContent font:HEADFONT size:CGSizeMake(SCREENWIDTH- WIDTHINIPHONE6(80), 10000000)];
29     CGFloat contentW = contentSize.width;
30     CGFloat contentH = contentSize.height;
31     self.contentFrameValue = [NSValue valueWithCGRect:CGRectMake(contentX, contentY, contentW, contentH)];
32     cellH = contentH + HEIGTHINIPHONE6(60);
33     
34     //时间显示
35     CGFloat timeX = nickNameX;
36     CGFloat timeY = cellH;
37     CGFloat timeW = WIDTHINIPHONE6(100);
38     CGFloat timeH = HEIGTHINIPHONE6(20);
39     self.timeFrameValue = [NSValue valueWithCGRect:CGRectMake(timeX, timeY, timeW, timeH)];
40     
41     //评论、点赞按钮 
42     CGFloat segY = cellH;
43     CGFloat segW = WIDTHINIPHONE6(30);
44     CGFloat segH = WIDTHINIPHONE6(30);
45     self.thumbBtnFrameValue = [NSValue valueWithCGRect:CGRectMake(SCREENWIDTH - WIDTHINIPHONE6(75), segY, segW, segH)];
46     self.commentBtnFrameValue = [NSValue valueWithCGRect:CGRectMake(SCREENWIDTH - WIDTHINIPHONE6(40), segY, segW, segH)];
47     
48     cellH = CGRectGetMaxY(CGRectMake(SCREENWIDTH - WIDTHINIPHONE6(100), segY, segW, segH));
49     
50     //点赞人显示
51     CGFloat thumX = nickNameX;
52     CGFloat thumY = cellH + HEIGTHINIPHONE6(0);
53     CGSize thumSize = [SCUtil sizeWithString:[_radioModel.thumbArray firstObject] font:FONT15TXT size:CGSizeMake((SCREENWIDTH - CGRectGetMinX([self.nickNameFrameValue CGRectValue]) - WIDTHINIPHONE6(30)), 10000000)];
54     CGFloat thumW = thumSize.width;
55     CGFloat thumH = thumSize.height;
56     if (thumSize.width > 1) {
57         thumW = thumSize.width + WIDTHINIPHONE6(20);
58     }else
59         thumH = 0.00f;
60     
61     _thumbPersonFrameValue = [NSValue valueWithCGRect:CGRectMake(thumX, thumY, thumW, thumH)];
62     if (thumH != 0.0f) {
63         cellH += CGRectGetMaxY(CGRectMake(thumX, thumY, thumW, thumH));
64     }
65     //评论内容显示
66     CGFloat commentHeight = CGRectGetMaxY(CGRectMake(thumX, thumY, thumW, thumH)) + HEIGTHINIPHONE6(10);
67     if ([_radioModel.commentsArray count]) {
68         CGFloat commentX = nickNameX;
69         for (int i = 0; i < [self.radioModel.commentsArray count]; i++) {
70             NSDictionary *dictionry = [self.radioModel.commentsArray objectAtIndex:i];
71             NSString *commentName = [[dictionry objectForKey:@"CommentatorName"] stringByAppendingString:@""];
72             NSString *commentContent = [dictionry objectForKey:@"CommentContent"];
73             
74             CGSize commentSize = [SCUtil sizeWithString:[commentName stringByAppendingString:commentContent] font:FONT15TXT size:CGSizeMake(SCREENWIDTH - WIDTHINIPHONE6(100), 100000000)];
75             CGFloat commentY = commentHeight;
76             CGFloat commentW = commentSize.width + WIDTHINIPHONE6(10);
77             CGFloat commentH = commentSize.height;
78             
79             cellH += commentH + HEIGTHINIPHONE6(2);
80             commentHeight += commentH + HEIGTHINIPHONE6(2);
81             CGRect segframe = CGRectMake(commentX, commentY, commentW, commentH);
82             [self.commentsArray addObject:[NSValue valueWithCGRect:segframe]];
83         }
84         cellH = CGRectGetMaxY([(NSValue *)[self.commentsArray lastObject] CGRectValue]) + HEIGTHINIPHONE6(10);
85         self.cellHeight = [NSString stringWithFormat:@"%.f",cellH];
86         CGFloat backGroundW = SCREENWIDTH - WIDTHINIPHONE6(90);
87         self.commentsBackGroundFrameValue = [NSValue valueWithCGRect:CGRectMake(nickNameX - WIDTHINIPHONE6(5), CGRectGetMaxY(CGRectMake(thumX, thumY, thumW, thumH)) + HEIGTHINIPHONE6(5), backGroundW + WIDTHINIPHONE6(10), commentHeight - CGRectGetMaxY(CGRectMake(thumX, thumY, thumW, thumH)))];
88     }else{
89         self.commentsBackGroundFrameValue = [NSValue valueWithCGRect:CGRectMake(nickNameX - WIDTHINIPHONE6(5), CGRectGetMaxY(CGRectMake(thumX, thumY, thumW, thumH)), 0, 0)];
90         self.cellHeight = [NSString stringWithFormat:@"%.f",CGRectGetMaxY(CGRectMake(thumX, thumY, thumW, thumH))];
91     }
92 }
93 
94 -(NSMutableArray *)commentsArray{
95     if (!_commentsArray) {
96         _commentsArray = [[NSMutableArray alloc] init];
97     }
98     return _commentsArray;
99 }
View Code

 

 tableviewcell的实现:

 1 #import <UIKit/UIKit.h>
 2 #import "RadioModelFrame.h"
 3 
 4 @protocol addBtnActionDelegate <NSObject>
 5 
 6 
 7 -(void)supportAction:(RadioModelFrame *)frameModel;
 8 
 9 -(void)sendMessage:(NSString *)message withModel:(RadioModelFrame *)frameModel;
10 
11 @end
12 
13 @interface SquareTableViewCell : UITableViewCell
14 /**
15  *  cell的视图尺寸类
16  */
17 @property(nonatomic, strong) RadioModelFrame *radioModelFrame;
18 
19 +(instancetype)cellWithTableView:(UITableView *)tableView andRadioModel:(RadioModel *)model;
20 
21 @property(nonatomic, weak)id<addBtnActionDelegate>delegate;
22 
23 -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier andRadioModel:(RadioModel *)model;
24 
25 @end
View Code
  1 #import "SquareTableViewCell.h"
  2 #import "RadioModel.h"
  3 #import "Masonry.h"
  4 #import "SCUtil.h"
  5 
  6 @interface SquareTableViewCell ()<UITextFieldDelegate>
  7 
  8 //@property(nonatomic, copy)RadioModel *radioModel;
  9 
 10 @property(nonatomic, strong)NSMutableArray *thumbArray;
 11 
 12 @property(nonatomic, strong)NSMutableArray *commentsViewArray;
 13 
 14 @property(nonatomic, weak) UIImageView *iconImgView;
 15 
 16 @property(nonatomic, weak) UILabel *nameLb;
 17 
 18 @property(nonatomic, weak) UILabel *contentLb;
 19 
 20 @property(nonatomic, weak) UILabel *timeLb;
 21 /**
 22  *  选择操作按钮(暂定“赞”、“评论”、“转发”三个选择)
 23  */
 24 @property(nonatomic, weak)UIButton *supportBtn;
 25 
 26 @property(nonatomic, weak)UIButton *commentsBtn;
 27 
 28 //@property(nonatomic, copy)UIButton *shareBtn;
 29 /**
 30  *  点赞人展示
 31  */
 32 @property(nonatomic, weak) UILabel *thumbPersonLb;
 33 
 34 @property(nonatomic, weak) UIImageView *commentsBackGroundView;
 35 /**
 36  *  文本输入框
 37  */
 38 @property(nonatomic, weak) UITextField *textField;
 39 
 40 @end
 41 
 42 @implementation SquareTableViewCell
 43 
 44 +(instancetype)cellWithTableView:(UITableView *)tableView andRadioModel:(RadioModel *)model
 45 {
 46     static NSString *identifier = @"RadioModelCell";
 47     
 48     SquareTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
 49     
 50     if (!cell) {
 51         cell = [[SquareTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier andRadioModel:model];
 52         cell.selectionStyle = UITableViewCellSelectionStyleNone;
 53     }
 54     return cell;
 55 }
 56 
 57 -(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier andRadioModel:(RadioModel *)model
 58 {
 59     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
 60     if (self) {
 61         self.selectionStyle = UITableViewCellSelectionStyleNone;
 62         //头像
 63         UIImageView *imgView = [[UIImageView alloc] init];
 64         [imgView.layer setMasksToBounds:YES];
 65         [imgView.layer setCornerRadius:WIDTHINIPHONE6(30)];
 66         [self.contentView addSubview:imgView];
 67         self.iconImgView = imgView;
 68         
 69         //昵称
 70         UILabel *nameLb = [[UILabel alloc] init];
 71         nameLb.font = HEADFONT;
 72         //nameLb.textColor = REDCOLOR;
 73         [self.contentView addSubview:nameLb];
 74         self.nameLb = nameLb;
 75         
 76         //广播内容
 77         UILabel *radioLb = [[UILabel alloc] init];
 78         radioLb.font = HEADFONT;
 79         radioLb.numberOfLines = 0;
 80         [self.contentView addSubview:radioLb];
 81         self.contentLb = radioLb;
 82         
 83         //时间显示
 84         UILabel *timeLb = [[UILabel alloc] init];
 85         timeLb.font = FONT12TXT;
 86         timeLb.textColor = GRAYBACK;
 87         [self.contentView addSubview:timeLb];
 88         self.timeLb = timeLb;
 89         
 90         //点赞按钮
 91         UIButton *thumBtn = [UIButton buttonWithType:UIButtonTypeCustom];
 92         [thumBtn setImage:[UIImage imageNamed:@"thumb"] forState:UIControlStateNormal];
 93 //        [thumBtn setBackgroundColor:REDCOLOR];
 94         [thumBtn addTarget:self action:@selector(supportAction) forControlEvents:UIControlEventTouchUpInside];
 95         [self.contentView addSubview:thumBtn];
 96         _supportBtn = thumBtn;
 97         
 98         //评论按钮
 99         UIButton *commentBtn = [UIButton buttonWithType:0];
100         [commentBtn setImage:[UIImage imageNamed:@"comment"] forState:0];
101 //        [commentBtn setBackgroundColor:[UIColor blueColor]];
102         [commentBtn addTarget:self action:@selector(commentToPerson) forControlEvents:UIControlEventTouchUpInside];
103         [self.contentView addSubview:commentBtn];
104         self.commentsBtn = commentBtn;
105         
106         //点赞的所有人
107         UILabel *supportLb = [[UILabel alloc] init];
108         supportLb.textColor = [UIColor colorWithRed:251/255.f green:25/255.f blue:255/255.f alpha:1];
109         supportLb.font = FONT15TXT;
110         [self.contentView addSubview:supportLb];
111         self.thumbPersonLb = supportLb;
112         
113         //评论的背景图
114         UIImageView *commentsBackImgView = [[UIImageView alloc] init];
115         commentsBackImgView.backgroundColor =  [UIColor colorWithRed:242/255.0 green:242/255.0 blue:242/255.0 alpha:1.0];
116         [self.contentView addSubview:commentsBackImgView];
117         self.commentsBackGroundView = commentsBackImgView;
118         
119         //输入框
120         UITextField *textfield = [[UITextField alloc] init];
121         textfield.delegate = self;
122         textfield.placeholder = @"评论";
123         textfield.borderStyle = UITextBorderStyleRoundedRect;
124         textfield.returnKeyType = UIReturnKeySend;
125         UIButton *clickBtn = [UIButton buttonWithType:UIButtonTypeCustom];
126         clickBtn.frame = CGRectMake(0, 0, WIDTHINIPHONE6(50), TABBARHEIGHT);
127         [clickBtn setBackgroundColor:DOMINANTCOLOR];
128         [clickBtn setTitle:@"发送" forState:UIControlStateNormal];
129         clickBtn.frame = CGRectMake(20, 20, WIDTHINIPHONE6(50), HEIGTHINIPHONE6(30));
130         [clickBtn addTarget:self action:@selector(sendComment) forControlEvents:UIControlEventTouchUpInside];
131         textfield.rightView = clickBtn;
132         textfield.rightViewMode = UITextFieldViewModeAlways;
133         [self.contentView addSubview:textfield];
134         self.textField = textfield;
135     }
136     return self;
137 }
138 
139 -(void)setRadioModelFrame:(RadioModelFrame *)radioModelFrame{
140     _radioModelFrame = radioModelFrame;
141     [self removeOldComments];
142     
143     [self settingData];
144     
145     [self settingFrame];
146 }
147 
148 //防止cell重叠
149 -(void)removeOldComments{
150     for (int i = 0; i < [self.commentsViewArray count]; i++) {
151         UILabel *commentsLb = [self.commentsViewArray objectAtIndex:i];
152         if (commentsLb.subviews) {
153             [commentsLb removeFromSuperview];
154         }
155     }
156     [self.commentsViewArray removeAllObjects];
157 }
158 
159 -(void)settingData{
160     RadioModel *radio = self.radioModelFrame.radioModel;
161     //显示头像
162     [self.iconImgView sd_setImageWithURL:[NSURL URLWithString:(NSString *)radio.publisherImg] placeholderImage:[UIImage imageNamed:@"squareCell"]];
163     //显示昵称
164     if ([SCUtil checkTelNumber:radio.publisherNickName]) {
165         NSRange range1 = NSMakeRange(0, 3);
166         NSRange range2 = NSMakeRange(7, 4);
167         NSString *displayStr1 = [radio.publisherNickName substringWithRange:range1];
168         NSString *displayStr2 = [radio.publisherNickName substringWithRange:range2];
169         NSString *name = [[displayStr1 stringByAppendingString:@"***"] stringByAppendingString:displayStr2];
170         self.nameLb.text = name;
171     }else
172         self.nameLb.text = radio.publisherNickName;
173     
174     //显示广播内容
175     self.contentLb.text = radio.msgContent;
176     //显示时间
177     self.timeLb.text = radio.publishTime;
178     
179     User *user = [NSKeyedUnarchiver unarchiveObjectWithFile:LOGINCACHEPATH];
180     //点赞人 、点赞按钮
181     self.thumbPersonLb.textColor = REDCOLOR;
182     self.thumbPersonLb.numberOfLines = 0;
183     if ([radio.thumbArray count]) {  //显示点赞者
184         if (![SCUtil isBlankString:[radio.thumbArray firstObject]]) {
185             _thumbPersonLb.text = [@"" stringByAppendingString:[radio.thumbArray firstObject]];
186         }else
187             _thumbPersonLb.text = @"";
188         
189         if (![SCUtil isBlankString:user.nickName]) {
190             if ([_thumbPersonLb.text containsString:user.nickName]) {
191                 [_supportBtn setImage:[UIImage imageNamed:@"thumb2"] forState:UIControlStateNormal];
192             }else
193                 [_supportBtn setImage:[UIImage imageNamed:@"thumb"] forState:UIControlStateNormal];
194         }else{
195             [_supportBtn setImage:[UIImage imageNamed:@"thumb"] forState:UIControlStateNormal];
196         }
197     }else{
198         [_supportBtn setImage:[UIImage imageNamed:@"thumb"] forState:UIControlStateNormal];
199     }
200     
201     //评论按钮
202         [self.commentsBtn setImage:[UIImage imageNamed:@"comment"] forState:UIControlStateNormal];
203     
204     //显示评论
205     for (int i = 0; i < [radio.commentsArray count]; i++) {
206         UILabel *commentLb = [[UILabel alloc] init];
207         commentLb.font = FONT15TXT;
208         commentLb.numberOfLines = 0;
209         
210         NSDictionary *dictionary = radio.commentsArray[i];
211         NSString *nameStr = [[dictionary objectForKey:@"CommentatorName"] stringByAppendingString:@""];
212         NSString *contentStr = [dictionary objectForKey:@"CommentContent"];
213         NSString *string = [nameStr stringByAppendingString:contentStr];
214         
215         NSMutableAttributedString *attriButeStr = [[NSMutableAttributedString alloc] initWithString:string];
216         [attriButeStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:251/255.f green:25/255.f blue:25/255.f alpha:1] range:NSMakeRange(0, nameStr.length)];
217         
218         commentLb.attributedText = attriButeStr;
219         [self.contentView addSubview:commentLb];
220         [self.commentsViewArray addObject:commentLb];
221     }
222     
223 }
224 
225 -(void)settingFrame{
226     self.iconImgView.frame = [self.radioModelFrame.iconFrameValue CGRectValue];
227     self.nameLb.frame = [self.radioModelFrame.nickNameFrameValue CGRectValue];
228     self.contentLb.frame = [self.radioModelFrame.contentFrameValue CGRectValue];
229     self.timeLb.frame =[self.radioModelFrame.timeFrameValue CGRectValue];
230     
231     //按钮
232     self.commentsBtn.frame =[self.radioModelFrame.commentBtnFrameValue CGRectValue];
233     self.supportBtn.frame = [self.radioModelFrame.thumbBtnFrameValue CGRectValue];
234     
235     //点赞人字符串
236     self.thumbPersonLb.frame = [self.radioModelFrame.thumbPersonFrameValue CGRectValue];
237     
238     for (int i = 0; i < [self.radioModelFrame.commentsArray count]; i++) {
239         if ([_commentsViewArray count] == 1) {
240             ((UILabel *)[_commentsViewArray objectAtIndex:0]).frame = [(NSValue *)[_radioModelFrame.commentsArray objectAtIndex:0] CGRectValue];
241         }
242         else
243             ((UILabel *)[_commentsViewArray objectAtIndex:i]).frame = [(NSValue *)[_radioModelFrame.commentsArray objectAtIndex:i] CGRectValue];
244     }
245     
246     //评论的尺寸
247     self.commentsBackGroundView.frame = [self.radioModelFrame.commentsBackGroundFrameValue CGRectValue];
248     
249     //文本
250     if (CGRectGetHeight(self.commentsBackGroundView.frame) > 1) {
251         self.textField.frame = CGRectMake(self.commentsBackGroundView.frame.origin.x, CGRectGetMaxY(self.commentsBackGroundView.frame) + HEIGTHINIPHONE6(5), self.commentsBackGroundView.frame.size.width, HEIGTHINIPHONE6(30));
252     }else if (CGRectGetHeight(self.thumbPersonLb.frame) > 1 ) {
253         self.textField.frame = CGRectMake(self.contentLb.frame.origin.x, CGRectGetMaxY(self.thumbPersonLb.frame) + HEIGTHINIPHONE6(5), SCREENWIDTH - WIDTHINIPHONE6(80), HEIGTHINIPHONE6(30));
254     }else{
255         self.textField.frame = CGRectMake(self.contentLb.frame.origin.x, CGRectGetMaxY(self.supportBtn.frame) + HEIGTHINIPHONE6(5), SCREENWIDTH - WIDTHINIPHONE6(80), HEIGTHINIPHONE6(30));
256     }
257     
258 }
259 
260 -(void)supportAction{
261     [self.delegate supportAction:_radioModelFrame];
262     [self.textField resignFirstResponder];
263 }
264 
265 -(void)commentToPerson{
266     [self.textField becomeFirstResponder];
267 }
268 
269 -(void)sendComment{
270     if (![SCUtil isBlankString:self.textField.text]) {
271         [self.delegate sendMessage:self.textField.text withModel:_radioModelFrame];
272         if (![SCUtil isBlankString:self.textField.text]) {
273             self.textField.text = @"";
274         }
275         [self.textField resignFirstResponder];
276     }
277 }
278 
279 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
280     if ([string isEqualToString:@"\n"]) {
281         if (![SCUtil isBlankString:self.textField.text]) {
282             [self.delegate sendMessage:self.textField.text withModel:_radioModelFrame];
283             if (![SCUtil isBlankString:self.textField.text]) {
284                 self.textField.text = @"";
285             }
286         }
287         [textField resignFirstResponder];
288         return NO;
289     }
290     return YES;
291 }
292 
293 -(NSMutableArray *)commentsViewArray{
294     if (!_commentsViewArray) {
295         _commentsViewArray = [[NSMutableArray alloc] init];
296     }
297     return _commentsViewArray;
298 }
299 
300 -(NSMutableArray *)thumbArray{
301     if (!_thumbArray) {
302         _thumbArray = [[NSMutableArray alloc] init];
303     }
304     return _thumbArray;
305 }
306 
307 @end
View Code

 

一般按照上边的方法基本能够实现了要求,当然,我这里为方便并没有加入图片显示,方正步骤都类似,只是多加个参数而已。

 

文章评论

要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员的鄙视链
程序员的鄙视链
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
总结2014中国互联网十大段子
总结2014中国互联网十大段子
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
鲜为人知的编程真相
鲜为人知的编程真相
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
旅行,写作,编程
旅行,写作,编程
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员必看的十大电影
程序员必看的十大电影
编程语言是女人
编程语言是女人
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员和编码员之间的区别
程序员和编码员之间的区别
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
每天工作4小时的程序员
每天工作4小时的程序员
漫画:程序员的工作
漫画:程序员的工作
程序员都该阅读的书
程序员都该阅读的书
Java程序员必看电影
Java程序员必看电影
 程序员的样子
程序员的样子
一个程序员的时间管理
一个程序员的时间管理
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
我是如何打败拖延症的
我是如何打败拖延症的
如何成为一名黑客
如何成为一名黑客
10个调试和排错的小建议
10个调试和排错的小建议
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员应该关注的一些事儿
程序员应该关注的一些事儿
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
老程序员的下场
老程序员的下场
我的丈夫是个程序员
我的丈夫是个程序员
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有