UI: 网易新闻实现
#pragma mark-(AppDelegate.H文件)----------------------------------------------------------------------- #pragma mark-(.M文件)----------------------------------------------------------------------- #import "AppDelegate.h"
#import "NavigationViewController.h"
#import "NewsListTVController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible]; NewsListTVController * newListVC = [[NewsListTVController alloc]init];
NavigationViewController * navlVC = [[NavigationViewController alloc]initWithRootViewController:newListVC];
self.window.rootViewController = navlVC;
[newListVC release];
[navlVC release]; return YES;
}
AppDelegate文件
#pragma mark (NavigationViewController .h文件)-------------------------------------------------------------------------------------------------------- #import <UIKit/UIKit.h> @interface NavigationViewController : UINavigationController @end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- #import "NavigationViewController.h"
#import "MacroHeader.h"
#import "NewsListTVController.h" @interface NavigationViewController () @end @implementation NavigationViewController - (void)viewDidLoad {
[super viewDidLoad];
[self commonsetting];//设置共有的导航栏属性
} -(void)commonsetting{
self.navigationBar.barTintColor = kmarginNavColor;
self.navigationBar.tintColor = [UIColor whiteColor];
} //内存安全处理
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
if ([self isViewLoaded] && !self.view.window) {
self.view = nil;
}
}
NavigationViewController文件
#ifndef wangyiNews_09_17_MacroHeader_h
#define wangyiNews_09_17_MacroHeader_h //共有导航栏颜色
#define kmarginNavColor [UIColor colorWithRed:171/255.0 green:41/255.0 blue:15/255.0 alpha:1.0]
#define kFont_date [UIFont systemFontOfSize:10] #define UIColorFromHexWithAlpha(hexValue,a) [UIColor colorWithRed:((float)((hexValue & 0xFF0000) >> 16))/255.0 green:((float)((hexValue & 0xFF00) >> 8))/255.0 blue:((float)(hexValue & 0xFF))/255.0 alpha:a]
#define UIColorFromHex(hexValue) UIColorFromHexWithAlpha(hexValue,1.0) #endif
MacroHeader.h 宏定义文件
#pragma mark (NewsListTVController .h文件)-------------------------------------------------------------------------------------------------------- #import <UIKit/UIKit.h>
@class Model;
@class Model_Detail; @interface NewsListTVController : UITableViewController
@property(nonatomic,retain)Model * mod;
@property(nonatomic,retain)NSMutableArray * arry;
@end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- //
// NewsListTVController.m
// wangyiNews_09_17
//
// Created by lanounjw on 15/9/17.
// Copyright (c) 2015年 lanouhn. All rights reserved.
// #import "NewsListTVController.h"
#import "Model.h"
#import "Type01TVCell.h"
#import "Type02TVCell.h"
#import "Type03TVCell.h"
#import "DetailViewController.h"
#import "Model_Detail.h" @interface NewsListTVController ()
@property(nonatomic,retain)NSMutableArray * dataSource;//存放数据源
@end @implementation NewsListTVController - (void)loadView {
[super loadView];
} - (void)viewDidLoad {
[super viewDidLoad];
[self customisedNavBar];
[self readFromPlist];
[self.tableView registerClass:[Type01TVCell class] forCellReuseIdentifier:@"type01"];
[self.tableView registerClass:[Type02TVCell class] forCellReuseIdentifier:@"type02"];
[self.tableView registerClass:[Type03TVCell class] forCellReuseIdentifier:@"type03"];
} //布局私有的导航栏
-(void)customisedNavBar{
self.navigationItem.title = @"网易新闻";
UIBarButtonItem * left = [[UIBarButtonItem alloc]initWithTitle:@"注册" style:UIBarButtonItemStylePlain target:self action:@selector(handleRegister:)];
left.tintColor = [UIColor whiteColor];
self.navigationItem.leftBarButtonItem = left; UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithTitle:@"登陆" style:UIBarButtonItemStylePlain target:self action:@selector(handleLogin:)];
right.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem = right;
} //首页注册按钮点击事件
-(void)handleRegister:(UIBarButtonItem *)sender{
NSLog(@"点击注册按钮");
} //首页登陆按钮点击事件
-(void)handleLogin:(UIBarButtonItem *)sender{
NSLog(@"点击登陆按钮");
} //读取本地数据源
-(void)readFromPlist{
self.dataSource = [NSMutableArray arrayWithCapacity:];
NSString * filePath = [[NSBundle mainBundle] pathForResource:@"NewsData" ofType:@"plist"];
NSDictionary * data = [NSDictionary dictionaryWithContentsOfFile:filePath];
for (NSString * key in data) {
if ([key isEqualToString:@"news"]) {
NSArray *newsArr = [NSArray arrayWithArray:[data objectForKey:key]];
for (NSDictionary * dic in newsArr) {
Model * model = [[Model alloc]initWithDic:dic];
[_dataSource addObject:model];
[model release];
}
}
}
} //内存警告处理
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
if ([self isViewLoaded] && !self.view.window) {
self.view = nil;
}
} #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return ;
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.dataSource.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
Model * model = self.dataSource[indexPath.row];
int num = indexPath.row % ;
if (num == ) {
Type01TVCell *cell = [tableView dequeueReusableCellWithIdentifier:@"type01" forIndexPath:indexPath];
cell.model = model;
return cell;
}
if (num == ) {
Type02TVCell *cell = [tableView dequeueReusableCellWithIdentifier:@"type02" forIndexPath:indexPath];
cell.model = model;
return cell;
}
if (num == ) {
Type03TVCell *cell = [tableView dequeueReusableCellWithIdentifier:@"type03" forIndexPath:indexPath];
cell.model = model;
return cell;
}
return nil;
} -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
int num = indexPath.row % ;
if (num == ) {
return ;
}
return ;
} //选中某一行新闻进入新闻详情
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
self.mod = self.dataSource[indexPath.row];
Model_Detail * moArr = [[Model_Detail alloc]init];
moArr.title = _mod.title;
moArr.summary = _mod.summary;
moArr.date = _mod.PUBLISHDATE;
moArr.imageView = _mod.imageview;
DetailViewController * detailVC = [[DetailViewController alloc]init];
self.arry = [NSMutableArray arrayWithArray: [moArr getArray]];//成功得到数据
[self.navigationController pushViewController:detailVC animated:YES];
[detailVC release];
} -(void)viewWillDisappear:(BOOL)animated{
DetailViewController * detailVC = [[DetailViewController alloc]init];
detailVC.arr = self.arry;
NSLog(@"%@",_arry);
NSLog(@"页面将要消失%@",detailVC.arr);
} /*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the specified item to be editable.
return YES;
}
*/ /*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
*/ /*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/ /*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/ /*
#pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/ @end
NewsListTVController 文件
#pragma mark (Type01TVCell .h文件)-------------------------------------------------------------------------------------------------------- #import <UIKit/UIKit.h>
@class Model; @interface Type01TVCell : UITableViewCell
@property(nonatomic,retain)Model * model;
@property(nonatomic,retain)UILabel * titleLabel;
@property(nonatomic,retain)UILabel * summaryLabel;
@property(nonatomic,retain)UILabel * dateLabel;
@property(nonatomic,retain)UIImageView * viewImage; @end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- //
// Type01TVCell.m
// wangyiNews_09_17
//
// Created by lanounjw on 15/9/17.
// Copyright (c) 2015年 lanouhn. All rights reserved.
// #import "Type01TVCell.h"
#import "Model.h"
#import "MacroHeader.h" @implementation Type01TVCell -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self.contentView addSubview:self.titleLabel];
[self.contentView addSubview:self.summaryLabel];
[self.contentView addSubview:self.dateLabel];
self.viewImage =[[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
_viewImage.tag = ;
//新闻图片是随机出现的
[_viewImage setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"new%d",(arc4random()%)+] ofType:@"png"]]];
// NSLog(@"%d",(arc4random()%7)+1);
[self.contentView addSubview:_viewImage];
}
return self;
} -(UILabel *)titleLabel{
if (!_titleLabel) {
self.titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
_titleLabel.backgroundColor = UIColorFromHex(0xEEEEE0);
}
return [[_titleLabel retain]autorelease];
}
-(UILabel *)summaryLabel{
if (!_summaryLabel) {
self.summaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
self.summaryLabel.adjustsFontSizeToFitWidth = YES;
self.summaryLabel.numberOfLines = ;
self.summaryLabel.font = [UIFont systemFontOfSize:];
}
return [[_summaryLabel retain]autorelease];
}
-(UILabel *)dateLabel{
if (!_dateLabel) {
self.dateLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
_dateLabel.font = [UIFont systemFontOfSize:];
}
return [[_dateLabel retain]autorelease];
} -(void)setModel:(Model *)model{
if (self.model != model) {
[_model release];
_model = [_model retain];
}
self.titleLabel.text = model.title;
self.summaryLabel.text = [[model.summary substringToIndex:]stringByAppendingString:@"..."];
self.dateLabel.text = model.PUBLISHDATE;
model.imageview = self.imageView;
self.viewImage = model.imageview;
}
@end
Type01TVCell 文件
#pragma mark (Type02TVCell .h文件)-------------------------------------------------------------------------------------------------------- #import <UIKit/UIKit.h>
@class Model; @interface Type02TVCell : UITableViewCell
@property(nonatomic,retain)Model * model;
@property(nonatomic,retain)UILabel * titleLabel;
@property(nonatomic,retain)UILabel * summaryLabel;
@property(nonatomic,retain)UILabel * dateLabel;
@property(nonatomic,retain)UIImageView * viewImage;
@end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- //
// Type02TVCell.m
// wangyiNews_09_17
//
// Created by lanounjw on 15/9/17.
// Copyright (c) 2015年 lanouhn. All rights reserved.
// #import "Type02TVCell.h"
#import "Model.h"
#import "MacroHeader.h" @implementation Type02TVCell -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self.contentView addSubview:self.titleLabel];
[self.contentView addSubview:self.summaryLabel];
[self.contentView addSubview:self.dateLabel];
self.viewImage =[[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
//新闻图片是随机出现的
[_viewImage setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"new%d",(arc4random()%)+] ofType:@"png"]]];
[self.contentView addSubview:_viewImage];
}
return self;
} -(UILabel *)titleLabel{
if (!_titleLabel) {
self.titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
_titleLabel.backgroundColor = UIColorFromHex(0xEEEEE0);
}
return [[_titleLabel retain]autorelease];
}
-(UILabel *)summaryLabel{
if (!_summaryLabel) {
self.summaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
self.summaryLabel.adjustsFontSizeToFitWidth = YES;
self.summaryLabel.numberOfLines = ;
self.summaryLabel.font = [UIFont systemFontOfSize:]; }
return [[_summaryLabel retain]autorelease];
}
-(UILabel *)dateLabel{
if (!_dateLabel) {
self.dateLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
_dateLabel.font = kFont_date;
}
return [[_dateLabel retain]autorelease];
} -(void)setModel:(Model *)model{
if (self.model != model) {
[_model release];
_model = [_model retain];
}
self.titleLabel.text = model.title;
self.summaryLabel.text = [[model.summary substringToIndex:]stringByAppendingString:@"..."];
self.dateLabel.text = model.PUBLISHDATE;
model.imageview = self.imageView;
self.viewImage = model.imageview;
}
@end
Type02TVCell 文件
#pragma mark (Type03TVCell .h文件)-------------------------------------------------------------------------------------------------------- #import <UIKit/UIKit.h>
@class Model; @interface Type03TVCell : UITableViewCell
@property(nonatomic,retain)Model * model;
@property(nonatomic,retain)UILabel * titleLabel;
@property(nonatomic,retain)UILabel * summaryLabel;
@property(nonatomic,retain)UILabel * dateLabel;
@property(nonatomic,retain)UIImageView * viewImage;
@end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- //
// Type03TVCell.m
// wangyiNews_09_17
//
// Created by lanounjw on 15/9/17.
// Copyright (c) 2015年 lanouhn. All rights reserved.
// #import "Type03TVCell.h"
#import "Model.h"
#import "MacroHeader.h" @implementation Type03TVCell -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self.contentView addSubview:self.titleLabel];
[self.contentView addSubview:self.summaryLabel];
self.summaryLabel.adjustsFontSizeToFitWidth = YES;
self.summaryLabel.numberOfLines = ;
self.summaryLabel.font = [UIFont systemFontOfSize:];
[self.contentView addSubview:self.dateLabel];
self.viewImage =[[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
//新闻图片是随机出现的
[_viewImage setImage:[[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"girl%d",(arc4random()%)+] ofType:@"png"]] imageWithRenderingMode:UIImageRenderingModeAutomatic]];
[self.contentView addSubview:_viewImage];
}
return self;
}
//#EAEAEA
-(UILabel *)titleLabel{
if (!_titleLabel) {
self.titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
_titleLabel.backgroundColor = UIColorFromHex(0xEEEEE0);
}
return [[_titleLabel retain]autorelease];
}
-(UILabel *)summaryLabel{
if (!_summaryLabel) {
self.summaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
}
return [[_summaryLabel retain]autorelease];
}
-(UILabel *)dateLabel{
if (!_dateLabel) {
self.dateLabel = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
_dateLabel.font = kFont_date;
}
return [[_dateLabel retain]autorelease];
} -(void)setModel:(Model *)model{
if (self.model != model) {
[_model release];
_model = [_model retain];
}
self.titleLabel.text = model.title;
self.summaryLabel.text = [[model.summary substringToIndex:]stringByAppendingString:@"..."];
self.dateLabel.text = model.PUBLISHDATE;
model.imageview = self.imageView;
self.viewImage = model.imageview;
}
@end
Type03TVCell 文件
#pragma mark (.h文件)-------------------------------------------------------------------------------------------------------- #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> //封装类 把本地 plist 文件里小字典里的信息存放到一个一个的对象里
@interface Model : NSObject
@property(nonatomic,retain)NSString * title;
@property(nonatomic,retain)NSString * summary;
@property(nonatomic,retain)NSString * PUBLISHDATE;
@property(nonatomic,retain)UIImageView * imageview;
-(instancetype)initWithDic:(NSDictionary * )dic;
@end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- //
// Model.m
// wangyiNews_09_17
//
// Created by lanounjw on 15/9/17.
// Copyright (c) 2015年 lanouhn. All rights reserved.
// #import "Model.h" @implementation Model //封装类 把找到的 key (这里的属性)赋值给封装类的属性(本类的属性)
-(instancetype)initWithDic:(NSDictionary * )dic{
self = [super init];
if (self) {
[self setValuesForKeysWithDictionary:dic];
}
return self;
} -(void)setValue:(id)value forUndefinedKey:(NSString *)key{ } -(void)dealloc{
self.title = nil;
self.summary = nil;
self.PUBLISHDATE = nil;
[super dealloc];
}
@end
Model 文件
#pragma mark (.h文件)-------------------------------------------------------------------------------------------------------- #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> typedef NSMutableArray * (^titleAndSummaryAndDate)(NSMutableArray * modelArr);
@interface Model_Detail : NSObject
@property(nonatomic,copy)titleAndSummaryAndDate modelArrary;
@property(nonatomic,retain)NSString * title, * summary, * date;
@property(nonatomic,retain)UIImageView * imageView;
@property(nonatomic,retain)NSMutableArray * allArrary;
-(NSMutableArray *)getArray; @end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- // Model_Detail.m
// wangyiNews_09_17
//
// Created by lanounjw on 15/9/17.
// Copyright (c) 2015年 lanouhn. All rights reserved.
// #import "Model_Detail.h" @implementation Model_Detail -(void)setTitle:(NSString *)title{
if (_title != title) {
[_title release];
_title = [title retain];
}
}
-(void)setSummary:(NSString *)summary{
if (_summary != summary) {
[_summary release];
_summary = [summary retain];
}
}
-(void)setDate:(NSString *)date{
if (_date != date) {
[_date release];
_date = [date retain];
}
}
-(void)setImageView:(UIImageView *)imageView{
if (_imageView != imageView) {
[_imageView release];
_imageView = [imageView retain];
}
}
-(void)setModelArrary:(titleAndSummaryAndDate)modelArrary{
if (_modelArrary != modelArrary) {
[_modelArrary release];
_modelArrary = [modelArrary retain];
}
}
-(NSMutableArray *)getArray{
NSMutableArray * arr0 = [NSMutableArray arrayWithCapacity:];
[arr0 addObject:self.title];
NSMutableArray * arr1 = [NSMutableArray arrayWithCapacity:];
[arr1 addObject:self.summary];
NSMutableArray * arr2 = [NSMutableArray arrayWithCapacity:];
[arr2 addObject:self.date];
NSMutableArray * arr3 = [NSMutableArray arrayWithCapacity:];
[arr3 addObject:self.imageView];
self.allArrary = [NSMutableArray arrayWithCapacity:];
[_allArrary addObject:arr0];
[_allArrary addObject:arr1];
[_allArrary addObject:arr2];
[_allArrary addObject:arr3];
NSLog(@"model_Detal 测试 %@",_allArrary);
return _allArrary;
} @end
Model_Detail文件
#pragma mark (DetailViewController .h文件)-------------------------------------------------------------------------------------------------------- #import <UIKit/UIKit.h>
#import "Model.h" @interface DetailViewController : UIViewController @property(nonatomic,retain)UILabel * titleLabel;
@property(nonatomic,retain)UILabel * summaryLabel;
@property(nonatomic,retain)UILabel * dateLabel;
@property(nonatomic,retain)UIImageView * imageView;
@property(nonatomic,retain)NSMutableArray * arr;
@property(nonatomic,retain)NSString * str0,*str1,*str2,*str3;
@end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- //
// DetailViewController.m
// wangyiNews_09_17
//
// Created by lanounjw on 15/9/17.
// Copyright (c) 2015年 lanouhn. All rights reserved.
// #import "DetailViewController.h"
#import "NewsListTVController.h" @interface DetailViewController () @end @implementation DetailViewController -(void)viewWillAppear:(BOOL)animated{
// self.str0 = _arr[0];
// self.str1 = _arr[1];
// self.str2 = _arr[2];
// self.str3 = _arr[3];
NSLog(@"页面将要出现%@ ",_arr);
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self customsizedNavBar];
[self makeDetialView];
} //私有导航条的设置
-(void)customsizedNavBar{
self.navigationItem.title = @"新闻详情";
UIBarButtonItem * left = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"btn_navigationBar_back@2x"] style:UIBarButtonItemStylePlain target:self action:@selector(handleBack:)];
self.navigationItem.leftBarButtonItem = left;
[left release]; UIBarButtonItem * right = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"doneR@2x"] style:UIBarButtonItemStylePlain target:self action:@selector(handleAddDone:)];
self.navigationItem.rightBarButtonItem = right;
[right release];
} //加载详情信息页面
-(void)makeDetialView{
//接受信息
// self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 74,self.view.frame.size.width - 20, self.view.frame.size.height * 0.2)];
// _imageView = _arr[3];
// [self.view addSubview:self.imageView];
// _imageView.backgroundColor = [UIColor redColor];
// [_imageView release]; self.titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(, self.view.frame.size.height * 0.2 + , self.view.frame.size.width - ,)];
_titleLabel.text = self.str0;
_titleLabel.backgroundColor = [UIColor grayColor];
[self.view addSubview:_titleLabel];
[_titleLabel release]; //自适应高度
CGFloat height = ;
self.summaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(, self.view.frame.size.height * 0.65 - , self.view.frame.size.width - , height)];
[self.view addSubview:_summaryLabel];
_summaryLabel.text = _arr[];
_summaryLabel.backgroundColor = [UIColor greenColor];
[_summaryLabel release]; self.dateLabel = [[UILabel alloc]initWithFrame:CGRectMake(self.view.frame.size.width - ,self.view.frame.size.height - , , )];
_dateLabel.text = _arr[];
[self.view addSubview:_dateLabel];
_dateLabel.backgroundColor = [UIColor blueColor];
} //返回按钮点击事件
-(void)handleBack:(UIBarButtonItem *)sender{
[self.navigationController popViewControllerAnimated:YES];
}
//收藏按钮点击事件
-(void)handleAddDone:(UIBarButtonItem *)sender{
NSLog(@"触发收藏按钮点击事件");
} //内存警告处理
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
if ([self isViewLoaded] && !self.view.window) {
self.view = nil;
}
} @end
DetailViewController 文件
UI: 网易新闻实现的更多相关文章
- iOS仿网易新闻栏目拖动重排添加删除效果
仿网易新闻栏目选择页面的基本效果,今天抽了点时间教大家如何实现UICollectionView拖动的效果! 其实实现起来并不复杂,这里只是基本的功能,没有实现细节上的修改,连UI都是丑丑的样子,随手画 ...
- Android(java)学习笔记206:利用开源SmartImageView优化网易新闻RSS客户端
1.我们自己编写的SmartImageView会有很多漏洞,但是我们幸运的可以在网上利用开源项目的,开源项目中有很多成熟的代码,比如SmartImageView都编写的很成熟的 国内我们经常用到htt ...
- Android(java)学习笔记205:网易新闻RSS客户端应用编写逻辑过程
1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...
- 【转】 iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
原文:http://blog.csdn.net/hmt20130412/article/details/34523235 本来只是打算介绍一下addChildViewController这个方法的,正 ...
- Android应用经典主界面框架之二:仿网易新闻client、CSDN client (Fragment ViewPager)
另外一种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表.使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View.而是Fragment.所 ...
- iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
本文转载至 http://www.tuicool.com/articles/3ymMzub CSDN博客原文 http://blog.csdn.net/hmt20130412/article/det ...
- Android(java)学习笔记149:利用开源SmartImageView优化网易新闻RSS客户端
1.我们自己编写的SmartImageView会有很多漏洞,但是我们幸运的可以在网上利用开源项目的,开源项目中有很多成熟的代码,比如SmartImageView都编写的很成熟的 国内我们经常用到htt ...
- Android(java)学习笔记148:网易新闻RSS客户端应用编写逻辑过程
1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...
- 网易新闻App架构重构实践:DDD正走向流行
网易新闻App架构重构实践:DDD正走向流行 https://mp.weixin.qq.com/s/FdwrT_xn3CQqpWoRVBttvQ 小智 InfoQ 2020-05-14 作者 | 小智 ...
随机推荐
- 【字符串+BFS】Problem 7. James Bond
https://www.bnuoj.com/v3/external/gym/101241.pdf [题意] 给定n个字符串,大小写敏感 定义一个操作:选择任意m个串首尾相连组成一个新串 问是否存在一个 ...
- msp430项目编程26
msp430中项目---串行存储器接口 1.I2C工作原理 2.I2C通信协议 3.代码(显示部分) 4.代码(功能实现) 5.项目总结 msp430项目编程 msp430入门学习
- CodeForces 582A【multiset使用样例】
题意: 给一些无序的数字,求解一个矩阵,使得矩阵的每一个元素都是行和列标志数的gcd,输出行标志数. 首先对数字进行排序.复杂度n*log(n^2). 这题的证明有官方的英文题解==在这直接贴英文题解 ...
- Codeforces Round Edu 36
A.B.C 略 D(dfs+强连通分量) 题意: 给出一个n(n<=500)点m(m<=100000)边的有向图,问能否通过删去一条边使得该图无环. 分析: 最简单的想法就是枚举一条边删去 ...
- SQL Server 2008 R2 安装时提示“Reporting Services目录数据库文件存在”
打开MSSQL数据库管理系统的安装目录,例如: X:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. 其中 X:\ ...
- 系统优化(一)Maven打包同一个jar有不同的:版本号+时间戳(解决思路)
解决:maven仓库的ear里面有非常多个同样的jar(仅仅是包括不同的:版本号+时间戳) 问题描写叙述: 发现ear里面有非常多个同样的jar,仅仅是包括不同的:版本号+时间戳,例如以下图所看到的: ...
- C\C++中strcat()函数、sprintf函数
http://blog.csdn.net/smf0504/article/details/52055971 http://c.biancheng.net/cpp/html/295.html
- win10 localhost 解析为::1 的解决办法
win10 localhost 解析为::1 的解决办法 学习了:https://blog.csdn.net/ambertian/article/details/70238020
- 设计模式 之代理(Proxy)模式
为什么这里要定义代理呢?所谓代理代理,当然就是你不想做的事.找别人去做,这就是代理.所以,当你写代码的时候.你想保持类的简单性.重用性.你就能够把事件尽量都交给其他类去做.自己仅仅管做好自己的事.也就 ...
- Mac 使用smb协议连接FTPserver
在Mac中,能够通过smb协议作为client连接到server,比如一个FTPserver,然后获取上面的共享文件. 方法: 1.在Finder菜单中点击前往 -- 连接server. 也能够Com ...