ios第三方数据请求 UI_15
生活随笔
收集整理的這篇文章主要介紹了
ios第三方数据请求 UI_15
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
AppDelegate.m
//指定根視圖self.window.rootViewController = [[[UINavigationController alloc]initWithRootViewController:[HomeViewController new]]autorelease];
自定義cell文件:
NewsCell.h
#import <UIKit/UIKit.h> @class News; @interface NewsCell : UITableViewCell //寫一個方法給cell上的控件賦值 - (void)assiginValueByNews : (News *)news; //定義一個類方法返回cell的行高 //根據傳進來的數據,計算當前cell的行高 + (CGFloat)cellHeight : (News *)news; @end
NewsCell.m
#import "News.h" #import "UIImageView+WebCache.h" @interface NewsCell () @property(nonatomic,retain)UIImageView *picView; @property(nonatomic,retain)UILabel *titleLabel; @property(nonatomic,retain)UILabel *summaryLabel;@end@implementation NewsCell - (void)dealloc{self.picView = nil;self.titleLabel = nil;self.summaryLabel = nil;[super dealloc]; }- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {[self.contentView addSubview:self.titleLabel];[self.contentView addSubview:self.summaryLabel];[self.contentView addSubview:self.picView];}return self;}//懶加載 //picView - (UIImageView *)picView{if (_picView == nil) {self.picView = [[[UIImageView alloc]initWithFrame:CGRectMake(0, 5, 80, 90)]autorelease]; // self.picView.backgroundColor = [UIColor orangeColor];}return [[_picView retain]autorelease]; }//titleLabel - (UILabel *)titleLabel{if (_titleLabel == nil) {self.titleLabel = [[[UILabel alloc]initWithFrame:CGRectMake(80, 5, 250, 30)]autorelease];self.titleLabel.backgroundColor = [UIColor orangeColor];//設置文字大小self.titleLabel.font = [UIFont systemFontOfSize:17.0];//根據內容換行self.titleLabel.numberOfLines = 0;}return [[_titleLabel retain]autorelease]; }//summmaryLabel - (UILabel *)summaryLabel{if (_summaryLabel == nil) {self.summaryLabel = [[[UILabel alloc]initWithFrame:CGRectMake(10, 100, 305, 55)]autorelease]; // self.summaryLabel.backgroundColor = [UIColor cyanColor];//設置文字大小self.summaryLabel.font = [UIFont systemFontOfSize:17.0];//根據內容換行self.summaryLabel.numberOfLines = 0;}return [[_summaryLabel retain]autorelease];}//寫一個方法給cell上的控件賦值 - (void)assiginValueByNews : (News *)news{//1.使用圖片異步加載的方法添加圖片,此時使用SDWebImage第三方,先加載一張默認圖片作為占位符,等從網上請求下來數據的時候再賦值給控件[self.picView sd_setImageWithURL:[NSURL URLWithString:news.hot_pic]placeholderImage:[UIImage imageNamed:@"1.jpg"]]; // self.imageView.image = [UIImage imageNamed:@"1.jpg"];self.titleLabel.text = news.title;self.summaryLabel.text = news.summary;//summaryLabel//修改完成之后重新計算self.summaryLabel的大小CGRect summaryRecct = self.summaryLabel.frame;//修改summaryRect的高summaryRecct.size.height = [[self class]summaryLabelHeight:news.summary];//將修改過后的大小賦值給self.summaryLabel.frameself.summaryLabel.frame = summaryRecct;//titieLabel//修改完成之后重新計算self.titleLabel的大小CGRect titleRect = self.titleLabel.frame;//修改它的高titleRect.size.height = [[self class]titleLabelHeight:news.title];//將修改過后的大小賦值給self.titleLabel.frameself.titleLabel.frame = titleRect;} //title + (CGFloat)titleLabelHeight : (NSString *)title{CGSize contextSize = CGSizeMake(250, 0);//設置計算時文本的一些屬性,比如:字體的大小NSDictionary *attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:17.0]};CGRect titleRect = [title boundingRectWithSize:contextSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];return titleRect.size.height;}//summary + (CGFloat)summaryLabelHeight : (NSString *)summary{CGSize contextSize = CGSizeMake(305, 0);//設置計算時文本的一些屬性,比如:字體的大小NSDictionary *attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:17.0]};CGRect summaryRect = [summary boundingRectWithSize:contextSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];return summaryRect.size.height;}//定義一個類方法返回cell的行高 //根據傳進來的數據,計算當前cell的行高 + (CGFloat)cellHeight : (News *)news{CGFloat summaryHeight = [self summaryLabelHeight:news.summary];CGFloat titleHeight = [self titleLabelHeight:news.title];return 5 + 30 + 10 + 10 +30 +summaryHeight + titleHeight; }model數據類型文件:
News.h
#import <Foundation/Foundation.h>@interface News : NSObject @property(nonatomic,copy)NSString *title;//標題 @property(nonatomic,copy)NSString *hot_pic;//圖片 @property(nonatomic,copy)NSString *summary;//新聞內容@end News.m@implementation News- (void)dealloc{self.title = nil;self.summary = nil;self.hot_pic = nil;[super dealloc];}- (void)setValue:(id)value forUndefinedKey:(NSString *)key{//碰到key值是description 時候,將value賦值給summaryif ([key isEqualToString:@"description"]) {self.summary = value;} }@end開始使用第三方數據請求:
HomeViewController.m
#import "NewsCell.h" #import "AFNetworking.h" #import "News.h" #define kNewsCell @"news-cell" @interface HomeViewController () @property(nonatomic,retain)NSMutableArray *dataSource; @end@implementation HomeViewController- (void)viewDidLoad {[super viewDidLoad];self.dataSource = nil;self.title = @"新聞";[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"3"] forBarMetrics:UIBarMetricsDefault];//注冊[self.tableView registerClass:[NewsCell class] forCellReuseIdentifier:kNewsCell];//調用從網絡請求數據[self readDataFormNetWork];} //懶加載 - (NSMutableArray *)dataSource{if (_dataSource == nil) {self.dataSource = [NSMutableArray arrayWithCapacity:0];}return [[_dataSource retain]autorelease]; }//從網絡請求數據 - (void)readDataFormNetWork{//1.準備網址對象NSString *urlStr = @"http://www.bjnews.com.cn/api/get_hotlist.php?page=1";//2.使用第三方AFNetWorking,做網絡請求,現在是一種主流的網絡請求方式//如果導入的第三方文件不支持MRC工程環境,選中target-->Bulid phases -->complie sources 將對應的文件后加入 -fobjc-arc//3.創建請求管理者AFHTTPRequestOperationManager *manger = [AFHTTPRequestOperationManager manager];//4.設置支持的數據格式manger.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];//5.請求數據__block typeof(self)weakself = self;[manger GET:urlStr parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {//responseObject 請求下來的數據在這里存儲,并且這個數據已經解析好了 // NSLog(@"%@",responseObject);NSMutableArray *mArray = responseObject[@"list"];for (NSDictionary *dic in mArray) {//創建model對象News *news = [[News alloc]init];//給model 賦值[news setValuesForKeysWithDictionary:dic];//添加到存放所有新聞對象的數組[weakself.dataSource addObject:news];[news release];} // NSLog(@"%@",self.dataSource); 驗證!//刷新UI界面[weakself.tableView reloadData];} failure:^(AFHTTPRequestOperation *operation, NSError *error) {//存儲請求失敗的信息}];} 顯示在cell的控件上:#pragma mark - Table view data source- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {// Return the number of sections.return 1; }- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {// Return the number of rows in the section.return self.dataSource.count; }- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {NewsCell *cell = [tableView dequeueReusableCellWithIdentifier:kNewsCell forIndexPath:indexPath];News *news = self.dataSource[indexPath.row];[cell assiginValueByNews:news];//選中cell的背景顏色cell.selectedBackgroundView = [[[UIView alloc]initWithFrame:cell.frame]autorelease];cell.selectedBackgroundView.backgroundColor = [UIColor greenColor];return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{return [NewsCell cellHeight:self.dataSource[indexPath.row]]; } 素材下載: ? ?
第三方AFNetWorking、SDWebImage下載:http://pan.baidu.com/s/1FOOkm
總結
以上是生活随笔為你收集整理的ios第三方数据请求 UI_15的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDE也卷了,微软杀入嵌入式IDE
- 下一篇: 计算机 分类号,中图法分类号(计算机,自