日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios第三方数据请求 UI_15

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。