一、程序实现要求

1、要求

2. 界面分析

(1) 需要读取或修改属性的控件需要设置属性

序号标签

图片

图片描述

左边按钮

右边按钮

(2) 需要监听响应事件的对象,需要添加监听方法

左边按钮

右边按钮

二、实现基本功能的程序

  1. //
  2. // YYViewController.m
  3. // 03-图片浏览器初步
  4. //
  5. // Created by apple on 14-5-21.
  6. // Copyright (c) 2014年 itcase. All rights reserved.
  7. //
  8.  
  9. #import "YYViewController.h"
  10.  
  11. #define POTOIMGW 200
  12. #define POTOIMGH 300
  13. #define POTOIMGX 60
  14. #define POTOIMGY 50
  15.  
  16. @interface YYViewController ()
  17.  
  18. //变量声明!
  19. @property(nonatomic,strong)UILabel *firstlab;
  20. @property(nonatomic,strong)UILabel *lastlab;
  21. @property(nonatomic,strong)UIImageView *icon;
  22. @property(nonatomic,strong)UIButton *leftbtn;
  23. @property(nonatomic,strong)UIButton *rightbtn;
  24.  
  25. -(void)change;
  26. @property(nonatomic ,assign)int i;
  27. @end
  28.  
  29. @implementation YYViewController
  30.  
  31. - (void)viewDidLoad
  32. {
  33. [super viewDidLoad];
  34. self.i=;
  35. //创建一个用来显示序号的lable控件
  36. UILabel *headlab=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
  37.  
  38. // [headlab setText:@"1/5"];
  39. [headlab setTextAlignment:NSTextAlignmentCenter];
  40. [headlab setTextColor:[UIColor blackColor]];
  41.  
  42. [self.view addSubview:headlab];
  43. self.firstlab=headlab;
  44.  
  45. //创建一个装载图片的控件
  46. UIImageView *potoimg=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];
  47.  
  48. UIImage *image=[UIImage imageNamed:@"biaoqingdi"];
  49. potoimg.image=image;
  50.  
  51. [self.view addSubview:potoimg];
  52. self.icon=potoimg;
  53.  
  54. //创建最下边的描述图片的lable控件
  55. UILabel *desclab=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
  56. // [desclab setText:@"表情弱爆了!"];
  57. [desclab setTextAlignment:NSTextAlignmentCenter];
  58. [self.view addSubview:desclab];
  59. self.lastlab=desclab;
  60.  
  61. //创建两个方向键按钮
  62. //设置为自定义类型
  63. //1.使用类创建对象
  64. UIButton *leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];
  65.  
  66. //2.设置对象的属性(不要忘记设置坐标)
  67. leftbtn.frame=CGRectMake(, self.view.center.y, , );
  68. [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
  69. [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
  70.  
  71. //3.提交对象到视图
  72. [self.view addSubview:leftbtn];
  73.  
  74. self.leftbtn=leftbtn;
  75. [leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];
  76.  
  77. UIButton *rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];
  78.  
  79. rightbtn.frame=CGRectMake(POTOIMGX+POTOIMGW+, self.view.center.y, , );
  80. [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
  81. [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
  82.  
  83. [self.view addSubview:rightbtn];
  84.  
  85. self.rightbtn=rightbtn;
  86. [rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];
  87.  
  88. //这是一个初始化方法,调用change可以完成初始化的工作
  89. [self change];
  90. }
  91.  
  92. -(void)change
  93. {
  94. [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i+]];
  95. switch (self.i) {
  96. case :
  97. self.lastlab.text=@"什么表情都弱爆了!";
  98. self.icon.image=[UIImage imageNamed:@"biaoqingdi"];
  99. break;
  100. case :
  101. self.lastlab.text=@"病例";
  102. self.icon.image=[UIImage imageNamed:@"bingli"];
  103. break;
  104. case :
  105. self.lastlab.text=@"王八";
  106. self.icon.image=[UIImage imageNamed:@"wangba"];
  107. break;
  108. case :
  109. self.lastlab.text=@"吃牛扒";
  110. self.icon.image=[UIImage imageNamed:@"chiniupa"];
  111. break;
  112. case :
  113. self.lastlab.text=@"蛋疼!";
  114. self.icon.image=[UIImage imageNamed:@"danteng"];
  115. break;
  116. }
  117. //控制按钮的点击,如果为5则右键失效,如果为1,则左键失效
  118. self.leftbtn.enabled=(self.i!=);
  119. self.rightbtn.enabled=(self.i!=);
  120.  
  121. }
  122.  
  123. //向右按键
  124. -(void)rightclick:(UIButton *)btn
  125. {
  126. self.i++;
  127. [self change];
  128. //NSLog(@"点我了");
  129. }
  130. -(void)leftclick:(UIButton *)btn
  131. {
  132. self.i--;
  133. [self change];
  134. }
  135. - (void)didReceiveMemoryWarning
  136. {
  137. [super didReceiveMemoryWarning];
  138. // Dispose of any resources that can be recreated.
  139. }
  140.  
  141. @end

三、程序优化

  1. //
  2. // YYViewController.m
  3. // 03-图片浏览器初步
  4. //
  5. // Created by apple on 14-5-21.
  6. // Copyright (c) 2014年 itcase. All rights reserved.
  7. //
  8.  
  9. #import "YYViewController.h"
  10.  
  11. #define POTOIMGW 200
  12. #define POTOIMGH 300
  13. #define POTOIMGX 60
  14. #define POTOIMGY 50
  15.  
  16. @interface YYViewController ()
  17.  
  18. //变量声明!
  19. @property(nonatomic,strong)UILabel *firstlab;
  20. @property(nonatomic,strong)UILabel *lastlab;
  21. @property(nonatomic,strong)UIImageView *icon;
  22. @property(nonatomic,strong)UIButton *leftbtn;
  23. @property(nonatomic,strong)UIButton *rightbtn;
  24.  
  25. @property(nonatomic,strong)NSArray *array;
  26.  
  27. -(void)change;
  28. @property(nonatomic ,assign)int i;
  29. @end
  30.  
  31. @implementation YYViewController
  32.  
  33. - (void)viewDidLoad
  34. {
  35. [super viewDidLoad];
  36. self.i=;
  37. //创建一个用来显示序号的lable控件
  38. UILabel *headlab=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
  39.  
  40. // [headlab setText:@"1/5"];
  41. [headlab setTextAlignment:NSTextAlignmentCenter];
  42. [headlab setTextColor:[UIColor blackColor]];
  43.  
  44. [self.view addSubview:headlab];
  45. self.firstlab=headlab;
  46.  
  47. //创建一个装载图片的控件
  48. UIImageView *potoimg=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];
  49.  
  50. UIImage *image=[UIImage imageNamed:@"biaoqingdi"];
  51. potoimg.image=image;
  52.  
  53. [self.view addSubview:potoimg];
  54. self.icon=potoimg;
  55.  
  56. //创建最下边的描述图片的lable控件
  57. UILabel *desclab=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
  58. // [desclab setText:@"表情弱爆了!"];
  59. [desclab setTextAlignment:NSTextAlignmentCenter];
  60. [self.view addSubview:desclab];
  61. self.lastlab=desclab;
  62.  
  63. //创建两个方向键按钮
  64. //设置为自定义类型
  65. //1.使用类创建对象
  66. UIButton *leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];
  67.  
  68. //2.设置对象的属性(不要忘记设置坐标)
  69. leftbtn.frame=CGRectMake(, self.view.center.y, , );
  70. [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
  71. [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
  72.  
  73. //3.提交对象到视图
  74. [self.view addSubview:leftbtn];
  75.  
  76. self.leftbtn=leftbtn;
  77. [leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];
  78.  
  79. UIButton *rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];
  80.  
  81. rightbtn.frame=CGRectMake(POTOIMGX+POTOIMGW+, self.view.center.y, , );
  82. [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
  83. [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
  84.  
  85. [self.view addSubview:rightbtn];
  86.  
  87. self.rightbtn=rightbtn;
  88. [rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];
  89. //放在这里的话,只会创建一次,但是这个部分和[self change];部分有很严格的顺序要求,并不人性化,可以考虑使用懒加载特性
  90. // NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};
  91. // NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};
  92. // NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};
  93. // NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};
  94. // NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};
  95. //
  96. // self.array=@[dict1,dict2,dict3,dict4,dict5];
  97. //这是一个初始化方法,调用change可以完成初始化的工作
  98. [self change];
  99. }
  100.  
  101. -(void)change
  102. {
  103. //每次调用都需要创建?有没有什么解决办法?
  104. // NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};
  105. // NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};
  106. // NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};
  107. // NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};
  108. // NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};
  109. //
  110. // NSArray *array=@[dict1,dict2,dict3,dict4,dict5];
  111.  
  112. //设置照片
  113. //先根据self.i取出数组中的元素,再取出元素(字典)中键值对应的值
  114. // self.icon.image=[UIImage imageNamed:array[self.i][@"name"]];
  115. // self.lastlab.text=array[self.i][@"desc"];
  116. // NSLog(@"%@",array[self.i][@"desc"]);
  117.  
  118. self.icon.image=[UIImage imageNamed:self.array[self.i][@"name"]];
  119. self.lastlab.text=self.array[self.i][@"desc"];
  120.  
  121. [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i+]];
  122.  
  123. // switch (self.i) {
  124. // case 0:
  125. // self.lastlab.text=@"什么表情都弱爆了!";
  126. // self.icon.image=[UIImage imageNamed:@"biaoqingdi"];
  127. // break;
  128. // case 1:
  129. // self.lastlab.text=@"病例";
  130. // self.icon.image=[UIImage imageNamed:@"bingli"];
  131. // break;
  132. // case 2:
  133. // self.lastlab.text=@"王八";
  134. // self.icon.image=[UIImage imageNamed:@"wangba"];
  135. // break;
  136. // case 3:
  137. // self.lastlab.text=@"吃牛扒";
  138. // self.icon.image=[UIImage imageNamed:@"chiniupa"];
  139. // break;
  140. // case 4:
  141. // self.lastlab.text=@"蛋疼!";
  142. // self.icon.image=[UIImage imageNamed:@"danteng"];
  143. // break;
  144. // }
  145. //控制按钮的点击,如果为5则右键失效,如果为1,则左键失效
  146. self.leftbtn.enabled=(self.i!=);
  147. self.rightbtn.enabled=(self.i!=);
  148.  
  149. }
  150.  
  151. //array的get方法
  152. -(NSArray *)array
  153. {
  154. NSLog(@"需要获取数组");
  155. //只实例化一次
  156. if (_array==nil) {
  157. NSLog(@"实例化数组");
  158. NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};
  159. NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};
  160. NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};
  161. NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};
  162. NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};
  163. _array=@[dict1,dict2,dict3,dict4,dict5];
  164. }
  165. // NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};
  166. // NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};
  167. // NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};
  168. // NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};
  169. // NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};
  170.  
  171. // _array=@[dict1,dict2,dict3,dict4,dict5];
  172. return _array;
  173. }
  174.  
  175. //向右按键
  176. -(void)rightclick:(UIButton *)btn
  177. {
  178. self.i++;
  179. [self change];
  180. }
  181.  
  182. //向左按键
  183. -(void)leftclick:(UIButton *)btn
  184. {
  185. self.i--;
  186. [self change];
  187. }
  188.  
  189. - (void)didReceiveMemoryWarning
  190. {
  191. [super didReceiveMemoryWarning];
  192. }
  193.  
  194. @end

说明:

1> 定义控件属性,注意:属性必须是strong的,示例代码如下:

@property (nonatomic, strong) UIImageView *icon;

2> 在属性的getter方法中实现懒加载,示例代码如下:

  1. - (UIImageView *)icon
  2.  
  3. {
  4.  
  5. if (!_icon) {
  6.  
  7. // 计算位置参数
  8.  
  9. CGFloat imageW = ;
  10.  
  11. CGFloat imageX = ( - imageW) / ;
  12.  
  13. CGFloat imageH = ;
  14.  
  15. CGFloat imageY = ;
  16.  
  17. // 实例化图像视图
  18.  
  19. _icon = [[UIImageView alloc] initWithFrame:CGRectMake(imageX, imageY, imageW, imageH)];
  20.  
  21. // 将图像视图添加到主视图
  22.  
  23. [self.view addSubview:_icon];
  24.  
  25. }
  26.  
  27. return _icon;
  28.  
  29. }

四、使用plist文件

(1)使用Plist文件的目的:将数据与代码分离

(2)加载方法:

NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];

_imageList = [NSArray arrayWithContentsOfFile:path];

提示:通常在方法中出现File字眼,通常需要传递文件的全路径作为参数

(3)代码示例

  1. //
  2. // YYViewController.m
  3. // 03-图片浏览器初步
  4. //
  5. // Created by apple on 14-5-21.
  6. // Copyright (c) 2014年 itcase. All rights reserved.
  7. //
  8.  
  9. #import "YYViewController.h"
  10.  
  11. #define POTOIMGW 200
  12. #define POTOIMGH 300
  13. #define POTOIMGX 60
  14. #define POTOIMGY 50
  15.  
  16. @interface YYViewController ()
  17.  
  18. //变量声明!
  19. @property(nonatomic,strong)UILabel *firstlab;
  20. @property(nonatomic,strong)UILabel *lastlab;
  21. @property(nonatomic,strong)UIImageView *icon;
  22. @property(nonatomic,strong)UIButton *leftbtn;
  23. @property(nonatomic,strong)UIButton *rightbtn;
  24.  
  25. @property(nonatomic,strong)NSArray *array;
  26.  
  27. -(void)change;
  28. @property(nonatomic ,assign)int i;
  29. @end
  30.  
  31. @implementation YYViewController
  32.  
  33. - (void)viewDidLoad
  34. {
  35. [super viewDidLoad];
  36. self.i=;
  37. //创建一个用来显示序号的lable控件
  38. UILabel *headlab=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
  39.  
  40. // [headlab setText:@"1/5"];
  41. [headlab setTextAlignment:NSTextAlignmentCenter];
  42. [headlab setTextColor:[UIColor blackColor]];
  43.  
  44. [self.view addSubview:headlab];
  45. self.firstlab=headlab;
  46.  
  47. //创建一个装载图片的控件
  48. UIImageView *potoimg=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];
  49.  
  50. UIImage *image=[UIImage imageNamed:@"biaoqingdi"];
  51. potoimg.image=image;
  52.  
  53. [self.view addSubview:potoimg];
  54. self.icon=potoimg;
  55.  
  56. //创建最下边的描述图片的lable控件
  57. UILabel *desclab=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
  58. // [desclab setText:@"表情弱爆了!"];
  59. [desclab setTextAlignment:NSTextAlignmentCenter];
  60. [self.view addSubview:desclab];
  61. self.lastlab=desclab;
  62.  
  63. //创建两个方向键按钮
  64. //设置为自定义类型
  65. //1.使用类创建对象
  66. UIButton *leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];
  67.  
  68. //2.设置对象的属性(不要忘记设置坐标)
  69. leftbtn.frame=CGRectMake(, self.view.center.y, , );
  70. [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
  71. [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
  72.  
  73. //3.提交对象到视图
  74. [self.view addSubview:leftbtn];
  75.  
  76. self.leftbtn=leftbtn;
  77. [leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];
  78.  
  79. UIButton *rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];
  80.  
  81. rightbtn.frame=CGRectMake(POTOIMGX+POTOIMGW+, self.view.center.y, , );
  82. [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
  83. [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
  84.  
  85. [self.view addSubview:rightbtn];
  86.  
  87. self.rightbtn=rightbtn;
  88. [rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];
  89. [self change];
  90. }
  91.  
  92. -(void)change
  93. {
  94. self.icon.image=[UIImage imageNamed:self.array[self.i][@"name"]];
  95. self.lastlab.text=self.array[self.i][@"desc"];
  96.  
  97. [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i+]];
  98.  
  99. self.leftbtn.enabled=(self.i!=);
  100. self.rightbtn.enabled=(self.i!=);
  101.  
  102. }
  103.  
  104. //array的get方法
  105. -(NSArray *)array
  106. {
  107. NSLog(@"需要获取数组");
  108. //只实例化一次
  109. if (_array==nil) {
  110.  
  111. NSString *path=[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
  112. //数组的数据从文件获取
  113. // _array=[NSArray arrayWithContentsOfFile:path];
  114. _array=[[NSArray alloc]initWithContentsOfFile:path];
  115. //打印查看包的位置
  116. NSLog(@"%@",path);
  117.  
  118. NSLog(@"实例化数组");
  119. }
  120.  
  121. return _array;
  122. }
  123.  
  124. //向右按键
  125. -(void)rightclick:(UIButton *)btn
  126. {
  127. self.i++;
  128. [self change];
  129. }
  130.  
  131. //向左按键
  132. -(void)leftclick:(UIButton *)btn
  133. {
  134. self.i--;
  135. [self change];
  136. }
  137.  
  138. - (void)didReceiveMemoryWarning
  139. {
  140. [super didReceiveMemoryWarning];
  141. }
  142.  
  143. @end

(4)plist文件

(5)实现效果

五、补充

开发思路:

1.完成基本功能

2.考虑性能

(1)(初始化操作,可以直接调用change进行)

(2)因为要控制序号和图片两个变量,所以考虑使用字典代替掉switch

(3)每次点击,字典都需要创建一次,效率地下,可以考虑创建的这部分拿到初始化方法中去,这样就只需要创建一次就ok了。

(4)考虑缺点(对代码的顺序要求极其严格)

(5)懒加载(需要的时候才加载,那么什么时候是需要的时候,及调用get方法的时候)

(6)每次都来一下?效率低下—》只有第一次调用get方法时为空,此时实例化并建立数组,其他时候直接返回成员变量(仅仅执行一次)

注意点:

1.方法的调用堆栈(顺序)。

2.使用plist:让数据的操作更加灵活,把数据弄到外面去,解除耦合性,让耦合性不要太强。实际上是一个xml,是苹果定义的一种特殊格式的xml。

3.bundle-包(只读)

iOS开发UI篇——简单的浏览器查看程序的更多相关文章

  1. iOS开发UI篇—简单的浏览器查看程序

    iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...

  2. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇—简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  3. iOS-UI篇—简单的浏览器查看程序和Tomcat简单实现

    #import "ViewController.h" @interface ViewController () @property (retain, nonatomic) NSAr ...

  4. iOS开发UI篇—Date Picker和UITool Bar控件简单介绍

    iOS开发UI篇—Date Picker和UITool Bar控件简单介绍 一.Date Picker控件 1.简单介绍: Date Picker显示时间的控件 有默认宽高,不用设置数据源和代理 如何 ...

  5. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇—UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

  6. iOS开发UI篇—使用picker View控件完成一个简单的选餐应用

    iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 一.实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162 ...

  7. iOS开发UI篇—Quartz2D简单使用(三)

    iOS开发UI篇—Quartz2D简单使用(三) 一.通过slider控制圆的缩放 1.实现过程 新建一个项目,新建一个继承自UIview的类,并和storyboard中自定义的view进行关联. 界 ...

  8. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

  9. ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

    本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布 ...

随机推荐

  1. cf C. Arithmetic Progression

    http://codeforces.com/contest/382/problem/C 题意:给你n个数,然后让你添加一个数使得n+1个数能形成这样的规律,a[1]-a[0]=a[2]-a[1]=a[ ...

  2. mysql 树形数据,层级数据Managing Hierarchical Data in MySQL

    原文:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ 引言 大多数用户都曾在数据库中处理过分层数据(hiera ...

  3. [置顶] 技术人血泪史:七种IT失误让你直接走人

    IT人士的真实故事:搞出大麻烦,旋即遭解雇 如今想找一份理想的IT工作并不容易,但丢掉一份工作却非常简单. 导致自己被炒鱿鱼的原因很多,无论是没能尽到保护雇主数字资产的义务.或者是滥用手中的权限以达到 ...

  4. open和fopen的区别(转)

    转载自:http://www.cnblogs.com/joeblackzqq/archive/2011/04/11/2013010.html open和fopen的区别: 1.缓冲文件系统缓 冲文件系 ...

  5. updatepanel刷新后重新加载js脚本问题

    在页尾加 <script type="text/javascript"> Sys.WebForms.PageRequestManager.getInstance().a ...

  6. MFC重绘函数:InvalidateRect(), Invalidate()和UpdateWindow()

    1. 重绘消息 当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化) WM_NCPAINT系统会自己搞定 WM_PAINT消 ...

  7. 2015第40周一Node学习

    node学习尝试 早上看了张丹大牛博客文章nodeJS学习路线图和node从零入门系列,感觉获益匪浅,尝试了里面几项内容,对node有了更深入的认识. npm npm是一个node包管理和分发工具,已 ...

  8. iOS Block中的weakSelf/strongSelf

    Objective C 的 Block 是一个很实用的语法,特别是与GCD结合使用,可以很方便地实现并发.异步任务.但是,如果使用不当,Block 也会引起一些循环引用问题(retain cycle) ...

  9. Selenium firefox 版本问题

    问题:Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms 原因: selenium-server-standalone-x. ...

  10. oracle的nvl函数的使用解析

    Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值. 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpre ...