[非凡程序员]UIKit 手写控件 UIImageView 和UITableView

UIImageView 是用来放置图片的

创建?一个UIImageView对象有五种?方法:
1.UIImageView *imageView1 = [[UIImageView alloc] init]; 实例化了一个UIImageView类型的对象 
2. UIImageView *imageView2 = [[UIImageView alloc] initWithFrame: (CGRect)]; 实例化了一个UIImageView类型的对象同时设置了图片的位置
3.UIImageView *imageView3 = [[UIImageView alloc] initWithImage:(UIImage *)];实例化了一个UIImageView类型的对象同时设置了图片是哪一个图片对象

不常用
1. UIImageView *imageView4 = [[UIImageView alloc] initWithImage: (UIImage *) highlightedImage:(UIImage *)];当这个ImageView的highlighted高亮的属性是 YES时,显示的就是参数highlightedImage高亮的,一般情况下显示的是第一个参数UIImage 
2. UIImageView *imageView5 = [[UIImageView alloc] initWithCoder: (NSCoder *)];

当之后想改变位置时,可以重新设定frame属性:
imageView.frame = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);
注意到UIImageView还有一个bounds属性:
imageView.bounds = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);

frame设置其位置和大小,而bounds只能设置其大小,其参数中的x、y不起作用即便是之前没有设定frame属性,控件最终的位置也不是bounds所设定的参数。bounds实现的是将UIImageView控件以原来的中心为中心进行缩放。
例如 如下代码:
imageView.frame = CGRectMake(0, 0, 320, 460); imageView.bounds =
CGRectMake(100, 100, 160, 230); 执行之后,这个imageView的位置和大小是(80, 115, 160, 230)。

contentMode属性:
这个属性是用来设置图片的显示方式,如居中、居右,是否缩放等,有以下?个常量可供设定:
UIViewContentModeScaleToFill 
UIViewContentModeScaleAspectFit
UIViewContentModeScaleAspectFill 
UIViewContentModeRedraw 
UIViewContentModeCenter 
UIViewContentModeTop 
UIViewContentModeBottom
UIViewContentModeLeft 
UIViewContentModeRight 
UIViewContentModeTopLeft
UIViewContentModeTopRight 
UIViewContentModeBottomLeft 
UIViewContentModeBottomRight

更改位置:
更改一个UIImageView的位置,可以直接修改其frame属性
修改其center属性:
imageView.center = CGPointMake(CGFloat x, CGFloat y); center属性指的就是这个ImageView的中间点。
使用transform属性
imageView.transform = CGAffineTransformMakeTranslation(CGFloat dx, CGFloat dy); 其中dx与dy表示想要往x或者y方向移动多少,而不是移动到多少。

旋转图像:
imageView.transform = CGAffineTransformMakeRotation(CGFloat angle);
要注意它是按照顺时针方向旋转的,?且旋转中心是原始ImageView的中心,
也就是center属性表?示的位置。
这个?法的参数angle的单位是弧度,而不是我们最常用的度数,所以可以写一
个宏定义:
#define degreesToRadians(x) (M_PI*(x)/180.0) 其中x写要旋转的角度

缩放图像:
还是使用transform属性:
imageView.transform = CGAffineTransformMakeScale(CGFloat scale_w, CGFloat scale_h);
其中,CGFloat scale_w与CGFloat scale_h分别表?将原来的宽度和高度缩放到多少倍

播放?系列图片:
imageView.animationImages = imagesArray; // 设定所有的图片在多少秒内播放完毕 imageView.animationDuration = [imagesArray count]; // 不重复播放多少遍,0表示无数遍 imageView.animationRepeatCount = 0; // 开始播放 [imageView startAnimating];

为图片添加单击事件:
imageView.userInteractionEnabled = YES; UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapImageView:)]; [imageView addGestureRecognizer:singleTap]; 一定要先将userInteractionEnabled置为YES,这样才能响应单击事件。

其他设置:
imageView.hidden = YES或者NO; // 隐藏或者显示图片 imageView.alpha = (CGFloat) al; // 设置透明度 imageView.highlightedImage = (UIImage *)hightlightedImage; // 设置?亮时显示的图片 imageView.image = (UIImage *)image; // 设置正常显示的图片 [imageView sizeToFit]; // 将图?尺寸调整为与内容图片相同

UIButton和UIImageView的区别:
1> UIImageView只能一种图片(图片默认会填充整个UIImageView) image\setImage: 
2> UIButton能显示2种图片
背景(背景会填充整个UIButton) setBackroungImage:forState:
前置(覆盖在背景上面的图片,按照之前的尺寸显示) setImage:forState: * 还能显?文字

1> UIImageView默认是不能响应点击事件
2> UIButton能响应点击事件 : addTarget:action:forControlEvents:

1> UIImageView : 只显?图片,不监听点击,点击了图片后不做任何反应 
2> UIButton : 既显示图片,又监听点击,点击了图片后做一些其他事情

1> UIButton之所以能添加监听器来监听事件,是因为它继承自UIControl
2> UIImagevIew之所以不能添加监听器来监听事件,是因为它直接继承自UIView

UITableView

几乎大多数的IOS项目中都可以看得到UITableView的影子,UITableView是 iPhone中比较常用的,?的比较多的控件。主要是用于展示一系列表的数据。
特点:显示大型内容的列表,单行,多列,垂直滚动,没有水平滚动,大量的数据集,性能强大。
UITableView有两个默认的内置风格 一个是简明风格 UITableViewStylePlain。 另一个是组团风格UITableViewStyleGrouped

UITableView有两个代理协议?
Protocol UITableViewDataSource:?来给TableView提供数据
什么是data source:数据的来源。?般情况下我们会设置拥有 UITableView的这个UIViewController为他的data source。
Protocal UITableViewDelegate:控制TableView的展示方式以及事件响应

协议实现:

//设置分区高度-(NSString*)tableView:(UITableView*)tableView:titleForHeaderInSection: (NSInteger)section

//改变行的高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath

//行缩进
-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath: (NSIndexPath *)indexPath

时间: 2024-10-13 00:21:52

[非凡程序员]UIKit 手写控件 UIImageView 和UITableView的相关文章

[非凡程序员]UIKit 手写控件转换大小写

// //  ViewController.m //  手写转换大小写 // //  Created by 非凡程序员 on 15/11/11. //  Copyright (c) 2015年 Querida. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [

[非凡程序员]手写UIDatePicker和UIPickerView

// //  ViewController.h //  手写UIDatePicker // //  Created by 非凡 程序员 on 15/11/13. //  Copyright (c) 2015年 非凡 程序员. All rights reserved. // #import <UIKit/UIKit.h> @interface  ViewController : UIViewController @property(nonatomic,strong)UIDatePicker *d

iOS开发UI基础—手写控件,frame,center和bounds属性

一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:self action:@selector(click:) forContro

iOS开发UI篇—手写控件,frame,center和bounds属性

iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:se

IOS开发基础篇--手写控件,frame,center和bounds属性

iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:se

OS开发UI基础—手写控件,frame,center和bounds属性

OS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4)如果是button等控件,还需考虑控件的单击事件等 (5)注意:View Contollor和view的关系 2.注意点 在OC开发中,Storyboard中的所有操作都可以通过代码实现,程序员一定要熟练掌握代码布局界面的能力! 设置控件监听方法的示例代码如下: [btn addTarget:sel

iOS开发基础篇-手写控件

一.手写控件的步骤 1)使用相应的控件类创建控件对象: 2)设置该控件的各种属性: 3)添加空间到视图中: 4)如果是 UIButton 等控件,还需考虑控件的单击事件等: 二.添加 UIButton 单击事件  [topbtn addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside]; 1) addTarget:forControlEvents: 方法定义在 UIControl 类中

[异能程序员]第一章 酒后事发,上头条

“明天就要交房租了,你工资还没发.怎么办?” “别着急啊,乖.总会有办法的.” “你每次都这么说,到了明天还是得我去找人借钱.你什么时候能有点出息?” “这次不用你管,我一定会有办法的.” “行了吧.你这些话我都听了不知道多少遍了,有什么卵用?都怪我当时年轻,相信什么嫁人就嫁程序员,挣得多,死得早.现在我才知道,死得早是真的,挣得多那就是扯淡.你看看别人,很多人在北京都已经有房有车了,我还在跟着你住着这么一个十几平米的破出租屋,还得每天想着怎么凑房租.你还是个男人吗?” “那些人都是靠父母的,又

一个老程序员是如何手写Spring MVC的

人见人爱的Spring已然不仅仅只是一个框架了.如今,Spring已然成为了一个生态.但深入了解Spring的却寥寥无几.这里,我带大家一起来看看,我是如何手写Spring的.我将结合对Spring十多年的研究经验,用不到400行代码来描述SpringIOC.DI.MVC的精华设计思想,并保证基本功能完整. 首先,我们先来介绍一下Spring的三个阶段,配置阶段.初始化阶段和运行阶段(如图): 配置阶段:主要是完成application.xml配置和Annotation配置. 初始化阶段:主要是