iOS开发网络篇—实现一个视频播放客户端小应用(三)

转自:http://www.cnblogs.com/wendingding/p/3815260.html

一、完善代码(封装)

对代码进行封装,对tableviewcell的封装处理

包括创建cell和封装,和对cell内部数据处理的封装。

处理代码:

主控制器中返回cell的部分:

复制代码
1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
2 {
3     YYCell *cell=[YYCell cellWithTableView:tableView];
4     //获取数据模型
5     cell.model=self.videos[indexPath.row];
6     return cell;
7 }
复制代码

自定义cell中进行封装

头文件代码如下:

复制代码
1 #import <UIKit/UIKit.h>
2 @class YYviodesModel;
3 @interface YYCell : UITableViewCell
4 
5 @property(nonatomic,strong)YYviodesModel  *model;
6 +(instancetype)cellWithTableView:(UITableView *)tableView;
7 @end
复制代码

cell部分的处理代码:

复制代码
 1 #import "YYCell.h"
 2 #import "YYviodesModel.h"
 3 #import "UIImageView+WebCache.h"
 4 
 5 @interface YYCell  ()
 6 @property(nonatomic,weak)UIView * divider;
 7 @end
 8 @implementation YYCell
 9 
10 +(instancetype)cellWithTableView:(UITableView *)tableView
11 {
12     static NSString *ID=@"ID";
13     YYCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
14     if (cell==nil) {
15         cell=[[YYCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
16     }
17     return cell;
18 }
19 
20 -(void)setModel:(YYviodesModel *)model
21 {
22     _model=model;
23   self.textLabel.text=model.name;
24     NSString *length=[NSString stringWithFormat:@"时长%d分钟",model.length];
25     self.detailTextLabel.text=length;
26     
27     // video.image == resources/images/minion_01.png
28     NSString *imageUrl = [NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/%@", model.image];
29     
30     //这里使用了第三方框架
31     [self.imageView  setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"placeholder"]];
32 
33 }
复制代码

一、完善代码(分类)

处理下面的代码

复制代码
 1 -(void)layoutSubviews
 2 {
 3     [super layoutSubviews];
 4     
 5     //调整frame
 6     //图片的frame
 7     CGFloat imageX=10;
 8     CGFloat imageY=10;
 9     CGFloat imageH=self.frame.size.height-2*imageY;
10     CGFloat imageW=imageH*200/112;
11     self.imageView.frame=CGRectMake(imageX, imageY, imageW, imageH);
12     
13     //标题的frame
14     CGRect textF=self.textLabel.frame;
15     textF.origin.x=imageW+2*imageX;
16     self.textLabel.frame=textF;
17     
18     //小标题的frame
19     CGRect detailTextF=self.detailTextLabel.frame;
20     detailTextF.origin.x=textF.origin.x;
21     self.detailTextLabel.frame=detailTextF;
22     
23     //设置下划线的frame
24     CGFloat dividerH=1.0;
25     CGFloat dividerW=self.frame.size.width;
26     CGFloat dividerY=self.frame.size.height-1;
27     self.divider.frame=CGRectMake(0, dividerY, dividerW, dividerH);
28 }
复制代码

添加一个UIView的分类,直接修改UI控件的x值等。

分类的实现:

UIView+Extension.h文件

复制代码
 1 //
 2 //  UIView+Extension.h
 3 //  01-文顶顶客户端
 4 //
 5 //  Created by apple on 14-6-29.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import <UIKit/UIKit.h>
10 
11 @interface UIView (Extension)
12 @property(nonatomic,assign)CGFloat x;
13 @property(nonatomic,assign)CGFloat y;
14 @property(nonatomic,assign)CGFloat width;
15 @property(nonatomic,assign)CGFloat height;
16 @end
复制代码

UIView+Extension.m文件

复制代码
 1 //
 2 //  UIView+Extension.m
 3 //  01-文顶顶客户端
 4 //
 5 //  Created by apple on 14-6-29.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "UIView+Extension.h"
10 
11 @implementation UIView (Extension)
12 -(void)setX:(CGFloat)x
13 {
14     CGRect frame=self.frame;
15     frame.origin.x=x;
16     self.frame=frame;
17 }
18 
19 -(CGFloat)x
20 {
21     return self.frame.origin.x;
22 }
23 
24 -(void)setY:(CGFloat)y
25 {
26     CGRect frame=self.frame;
27     frame.origin.y=y;
28     self.frame=frame;
29 }
30 
31 -(CGFloat)y
32 {
33     return self.frame.origin.y;
34 }
35 
36 -(void)setWidth:(CGFloat)width
37 {
38     CGRect frame=self.frame;
39     frame.size.width=width;
40     self.frame=frame;
41 }
42 -(CGFloat)width
43 {
44     return self.frame.size.width;
45 }
46 
47 -(void)setHeight:(CGFloat)height
48 {
49     CGRect frame=self.frame;
50     frame.size.height=height;
51     self.frame=frame;
52 }
53 -(CGFloat)height
54 {
55     return self.frame.size.height;
56 }
57 @end
复制代码

cell设置frame部分的代码:

复制代码
 1 //
 2 //  YYCell.m
 3 //  01-文顶顶客户端
 4 //
 5 //  Created by apple on 14-6-29.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYCell.h"
10 #import "YYviodesModel.h"
11 #import "UIImageView+WebCache.h"
12 #import "UIView+Extension.h"
13 
14 @interface YYCell  ()
15 @property(nonatomic,weak)UIView * divider;
16 @end
17 @implementation YYCell
18 
19 +(instancetype)cellWithTableView:(UITableView *)tableView
20 {
21     static NSString *ID=@"ID";
22     YYCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
23     if (cell==nil) {
24         cell=[[YYCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
25     }
26     return cell;
27 }
28 
29 -(void)setModel:(YYviodesModel *)model
30 {
31     _model=model;
32   self.textLabel.text=model.name;
33     NSString *length=[NSString stringWithFormat:@"时长%d分钟",model.length];
34     self.detailTextLabel.text=length;
35     
36     // video.image == resources/images/minion_01.png
37     NSString *imageUrl = [NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/%@", model.image];
38     
39     //这里使用了第三方框架
40     [self.imageView  setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"placeholder"]];
41 
42 }
43 
44 - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
45 {
46     self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
47     if (self) {
48 
49         //加一条线
50         UIView *divider=[[UIView alloc]init];
51         [divider setBackgroundColor:[UIColor brownColor]];
52         divider.alpha=0.5;
53         [self.contentView addSubview:divider];
54         self.divider=divider;
55         
56     }
57     return self;
58 }
59 
60 -(void)layoutSubviews
61 {
62     [super layoutSubviews];
63     
64     //调整frame
65     //图片的frame
66     CGFloat imageX=10;
67     CGFloat imageY=10;
68     CGFloat imageH=self.height-2*imageY;
69     CGFloat imageW=imageH*200/112;
70     self.imageView.frame=CGRectMake(imageX, imageY, imageW, imageH);
71     
72     //标题的frame
73 //    CGRect textF=self.textLabel.frame;
74 //    textF.origin.x=imageW+2*imageX;
75 //    self.textLabel.frame=textF;
76     self.textLabel.x=imageW+2*imageX;
77     
78     //小标题的frame
79 //    CGRect detailTextF=self.detailTextLabel.frame;
80 //    detailTextF.origin.x=textF.origin.x;
81 //    self.detailTextLabel.frame=detailTextF;
82     self.detailTextLabel.x= self.textLabel.x;
83     
84     //设置下划线的frame
85     CGFloat dividerH=1.0;
86     CGFloat dividerW=self.width;
87     CGFloat dividerY=self.height-1;
88     self.divider.frame=CGRectMake(0, dividerY, dividerW, dividerH);
89 }
90 
91 @end
复制代码

提示:可以把写好的分类保存起来,以后在处理类似场景的时候,拿来就用。

设置后,不会对项目产生什么影响。

模拟器显示情况:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值