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

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

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

一、完善代码(封装)

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

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

处理代码:

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

1 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath2 {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 : UITableViewCell4 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 *)tableView11 {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 *)model21 {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.png28     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     //标题的frame14     CGRect textF=self.textLabel.frame;15     textF.origin.x=imageW+2*imageX;16     self.textLabel.frame=textF;17     18     //小标题的frame19     CGRect detailTextF=self.detailTextLabel.frame;20     detailTextF.origin.x=textF.origin.x;21     self.detailTextLabel.frame=detailTextF;22     23     //设置下划线的frame24     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)x13 {14     CGRect frame=self.frame;15     frame.origin.x=x;16     self.frame=frame;17 }18 19 -(CGFloat)x20 {21     return self.frame.origin.x;22 }23 24 -(void)setY:(CGFloat)y25 {26     CGRect frame=self.frame;27     frame.origin.y=y;28     self.frame=frame;29 }30 31 -(CGFloat)y32 {33     return self.frame.origin.y;34 }35 36 -(void)setWidth:(CGFloat)width37 {38     CGRect frame=self.frame;39     frame.size.width=width;40     self.frame=frame;41 }42 -(CGFloat)width43 {44     return self.frame.size.width;45 }46 47 -(void)setHeight:(CGFloat)height48 {49     CGRect frame=self.frame;50     frame.size.height=height;51     self.frame=frame;52 }53 -(CGFloat)height54 {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 @end17 @implementation YYCell18 19 +(instancetype)cellWithTableView:(UITableView *)tableView20 {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 *)model30 {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.png37     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 *)reuseIdentifier45 {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)layoutSubviews61 {62     [super layoutSubviews];63     64     //调整frame65     //图片的frame66     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     //标题的frame73 //    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     //小标题的frame79 //    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     //设置下划线的frame85     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

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

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

模拟器显示情况: