1、UIImageView 
是用来显示图片的控件,相当于相框,用来显示UIImage对象 
   
   
 
   
//初始化UIImage对象及为其加载图片

//第一种方式

//   
UIImage *image = [UIImage imageNamed:@"1.JPG"];
 
  第二种方式
 
  通过图片的路径加载图片
 
  通过应用程序包找出图片 NSBundle
(应用程序包类)
 
  获取当前应用包对象
   
//pathForResource: 资源名称 ofType:
资源类型
//   
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"2"
ofType:@"JPG"];
//   
UIImage *image2 = [UIImage
imageWithContentsOfFile:filePath];
两种优缺点和使用场景:
 
  
第一种方式:如果这个图片资源被多次使用,使用第一种方式,此种方式会把图片添加到应用程序的缓存中,多次使用比较方便
,缺点:占用内存,优点:第二次使用速度很快
       
第二种方式:如果这个图片资源只被使用一次,使用第二种方式,此种方式不会把图片对象添加到缓存中,缺点:耗时
注意:本节素材下载(百度云):UIImageView素材http://pan.baidu.com/s/1t2H2m
 
     
     
     
     
     
     
     
     
     
     
     
     动画素材
  
http://pan.baidu.com/s/1eQk7fN0
——————————————————————————————
 
  //创建UIimageView 对象
  
UIImageView *imageView = [[UIImageView
alloc]initWithImage:image];
  
//配置属性
 
  //设定frame
 
  imageView.frame = [UIScreen
mainScreen].bounds;
 
  //重新设置图片
 
  imageView.image = image2;
  
[self.view addSubview:imageView];
 
  [imageView release];
 
  //UIImageView 加载动态图片
   
//1.准备一组图片  使用数组存放

   
NSMutableArray *imageArray = [NSMutableArray
arrayWithCapacity:7];

    
//使用for循环添加图片
   
for (int i =1; i < 8; i ++) {
       
//先确定图片的名字

       
NSString *name = [NSString stringWithFormat:@"huoju_%d.tiff",i
];

       
//初始化image对象

       
UIImage *image = [UIImage imageNamed:name];

       
//将图片添加到数组中
       
[imageArray addObject:image];

   
}
//
   
NSLog(@"%@",imageArray);//验证数组中是否添加完成
 
  //建立动画视图
   
UIImageView  *fireImageView = [[UIImageView
alloc]initWithFrame:CGRectMake(120, 100, 79, 106)];

   
fireImageView.backgroundColor = [UIColor greenColor];

   
//设置UIImageView 播放动态图片需要的数组
   
fireImageView.animationImages  =
imageArray;
   
//设置播放速度

   
fireImageView.animationDuration = 0.1;

   
//设置播放图片重复次数
   
fireImageView.animationRepeatCount = 1000;
   
//启动动态图片播放 对动画的配置写在动画开始之前 VIP
   
[fireImageView startAnimating];
   
//添加到父视图

    [self.view
addSubview:fireImageView];
   
[fireImageView release];
   
//等比缩放图片

    NSString
*fielePath2 = [[NSBundle mainBundle]pathForResource:@"8"
ofType:@"JPG"];

    UIImage
*image3 = [UIImage imageWithContentsOfFile:fielePath2];

   
//image3.size 
中存放的是图片的宽和高
   
NSLog(@"%@",NSStringFromCGSize(image3.size));
   
//将UIImageView
设置为宽200,高为知,用来显示不是真的image3
   
UIImageView *CFImageView = [[UIImageView
alloc]initWithImage:image3];

   
CGFloat h = image3.size.height * 200 / image3.size.width
;
   
CFImageView.frame = CGRectMake(60, 200, 200, h);
   
[self.view addSubview:CFImageView];
   
[CFImageView release];
最终效果如下:



————————————————————————————
练习1:
//制作僵尸动态图片
      
CGSize zSize = CGSizeZero;
   
NSMutableArray *Zombil = [NSMutableArray
arrayWithCapacity:22];
   
for (int i = 1; i < 23; i ++) {

       
//先确定图片的名字
       
NSString *name1 = [NSString
stringWithFormat:@"Zombie%d.tiff",i];

       
//创建Image对象

       
UIImage *image4 = [UIImage imageNamed:name1];

       
//定义Size变量存储图片大小

       
zSize = image4.size;

       
//将图片添加到数组中
       
[Zombil addObject:image4];
   
}
   
NSLog(@"%@",Zombil);//验证
   
//建一个imageView 视图

    UIImageView
*zombie1 = [[UIImageView alloc]initWithFrame:CGRectMake(10, 100,
300, zSize.height * 300 / zSize.height)];

   
zombie1.backgroundColor = [UIColor redColor];

   
//设置播放动画需要的数组
   
zombie1.animationImages = Zombil;

   
//设置播放速度

   
zombie1.animationDuration = 3;

   
//设置播放重复次数:给0是无限重复
   
zombie1.animationRepeatCount = 100;
   
//启动动画

    [zombie1
startAnimating];

   
//加载到父视图
   
[self.view addSubview:zombie1];
   
[zombie1 release];
最终效果:



======================================================
2、UISwitch  开关控件 继承自
UIControl
   
//创建Swictch对象

    UISwitch
*aSwitch1 = [[UISwitch alloc]initWithFrame:CGRectMake(30, 50, 0,
0)];

   
//配置Switch边框的渲染颜色

   
aSwitch1.tintColor = [UIColor redColor];

    //配置控件内部的颜色

   
aSwitch1.onTintColor = [UIColor blueColor];

   
//设置按钮的颜色
   
aSwitch1.thumbTintColor = [UIColor cyanColor];
   
//给Switch 添加事件

    //self
指视图控制器对象
   
[aSwitch1 addTarget:self action:@selector(handleSwitch:)
forControlEvents:UIControlEventValueChanged];//当状态代表的数值改变的时候事件触发
   
[self.view addSubview:aSwitch1];
   
[aSwitch1 release];
}

#pragma mark switch 的关联事件

- (void)handleSwitch: (UISwitch *)aswitch{
   
//首先应该或许开关控件当前的状态
   
switch ((int)aswitch.on) {

       
case YES:

           
NSLog(@"开了");

           
break;

           
case NO:

           
NSLog(@"关了");

           
break;

       
default:

           
break;
   
}
}
======================================================
3、UIStepper 
加减控件   继承自 UIControl

   
UIStepper *aStep = [[UIStepper alloc]initWithFrame:CGRectMake(100, 100, 0, 0)];

   
//设置边框颜色

   
aStep.tintColor = [UIColor redColor];

   
//设置背景颜色

   
aStep.backgroundColor = [UIColor cyanColor];

   
//设置step的最小值
默认最小值是0.0

   
aStep.minimumValue = 10.0;

   
//设置step的最大值 
默认最大值是100.0

   
aStep.maximumValue = 30.0;

   
//长按按钮数值是否自动增加或减小,默认为YES

aStep.autorepeat = NO;

   
//设置控件所代表的数值当大于最大值或者小于最小值的时候,是否可以从另一头开始

//   
aStep.wraps = YES;

   
//设置点击按钮时数值的变化值

aStep.stepValue = 10.0;

   
//给aStep添加事件
   
[aStep addTarget:self action:@selector(handleStepper : )
forControlEvents:(UIControlEventValueChanged)];
   
[self.view addSubview:aStep];

   
[aStep release];


}



//实现事件方法
-
(void)handleStepper :
(UIStepper *)stepper{

   
//stepper.value
代表这个控件当前的数值

   
NSLog(@"%f",stepper.value);
}
=========================================================
4、UISegmentedControl 
分段控制器,此控件有多个分段组成,每一个分段相当于一个button
   
NSArray *titles = @[@"红色",@"绿色背景",@"蓝色",@"橙色",@"紫色"];

    //创建segmentControl
对象,并为每个分段添加title

   
UISegmentedControl *aSegment = [[UISegmentedControl
alloc]initWithItems:titles];

   
//segmentControl 每个标题的宽度默认是等分总宽度的

   
aSegment.frame = CGRectMake(20, 40, 280, 40);

   
//设置segmentControl的边框颜色

   
aSegment.tintColor = [UIColor magentaColor];

   
//设置默认选中的分段
   
aSegment.selectedSegmentIndex = 0;
   
//修改分段的宽度
 
  [aSegment setWidth:60
forSegmentAtIndex:1];
   
//给segmentControl 关联事件
   
[aSegment addTarget:self action:@selector(handlSegment : )
forControlEvents:(UIControlEventValueChanged)];
   
//添加父视图

    [self.view
addSubview:aSegment];
   
[aSegment release];
}
 
 ————————————————————
#pragma mark 
segmentControl 的关联事件
- (void)handlSegment : (UISegmentedControl
*)segment{
//   
segment.selectedSegmentIndex  
返回当前分段控制器被选中的下标
   
NSLog(@"%ld",segment.selectedSegmentIndex);//验证
   
self.view.backgroundColor = [UIColor blueColor];

    switch
(segment.selectedSegmentIndex) {

       
case 0:

           
self.view.backgroundColor = [UIColor redColor];

           
break;

           
case 1:

           
self.view.backgroundColor = [UIColor greenColor];

           
break;

           
case 2:

           
self.view.backgroundColor = [UIColor blueColor];

           
break;

           
case 3:

           
self.view.backgroundColor = [UIColor orangeColor];

           
break;

           
case 4:

           
self.view.backgroundColor = [UIColor purpleColor];

           
break;

       
default:

           
break;

   
}
}
================================================
5、UISlider 
滑块控件,继承自UIControl ,主要用来显示当前播放进度,控制音量或进度
(注意:必须记忆的方法)
   
UISlider
*aSlider =
[[UISlider
alloc]initWithFrame:CGRectMake(20,
100,
280,
30)];

//设置属性

//设置滑块最小值

aSlider.minimumValue
=
0.2;

//设置滑块最大值

aSlider.maximumValue
=
1.0;

//设置滑块当前的数值(或位置)

aSlider.value
=
0.5;

//设置滑过区域的颜色

aSlider.minimumTrackTintColor
=
[UIColor
redColor];

//设置未滑过区域的颜色

aSlider.maximumTrackTintColor
=
[UIColor
whiteColor];

//设置滑块上的图片

[aSlider setThumbImage:[UIImage
imageNamed:@"slider"]
forState:UIControlStateNormal];

//关联时间

   
[aSlider addTarget:self
action:@selector(handleSlinder
: ) forControlEvents:(UIControlEventValueChanged)];
   
[self.view
addSubview:aSlider];
   
[aSlider release];
}
效果图:

——————————————————————————————
#pragma mark slider的关联时间
-
(void)handleSlinder
:  (UISlider
*)aSlider{

//通过滑块控制视图的透明度

self.view.alpha
=
aSlider.value;

   
//value
返回的是当前滑块所在位置代表的数值
   
//NSLog(@"%.2f",aSlider.value);//验证使用,用过要注掉
}

=========================================================

总结:UIControll 是控制控件的基类,凡是继承自该类的子类都可以通过addTarget:
action: forControlEvents : 这个方法添加响应时间,UIontrol类的实现类似我们学过的target ...
action 设计模式,所以如果你想自定义一个视图,而且还是能够响应事件的,那就让它继承自UIControl;


欢迎学习本文,未经博主许可,禁止转载!

UIController子类控件&nbsp;UI_06的更多相关文章

  1. TControl.WMLButtonUp的inherited的作用——是为了给子类控件新的处理消息的机会

    意外注意到这个小细节: procedure TControl.WMLButtonUp(var Message: TWMLButtonUp); begin inherited; // 注意,如果是直接点 ...

  2. ListView中Item与Checkable子类控件抢焦点问题

    Android开发中,经常需要为ListView定制Adapter,绑定各种子类控件.如果Item包含Button等Checkable的控件,那么就会发生点击Item无法响应的问题.原因是自己定义的I ...

  3. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  4. Android ListView 子控件点击事件

    android:descendantFocusability beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只 ...

  5. Android:控件布局(相对布局)RelativeLayout

    RelativeLayout是相对布局控件:以控件之间相对位置或相对父容器位置进行排列. 相对布局常用属性: 子类控件相对子类控件:值是另外一个控件的id android:layout_above-- ...

  6. Android关于ListView中item与控件抢夺焦点的那些事

    在开发中,listview可以说是我们使用最频繁的控件之一了,但是关于listview的各种问题也是很多.当我们使用自定义布局的Listview的时候,如果在item的布局文件里面存在Button或者 ...

  7. OnClick事件的Sender参数的前世今生——TWinControl.WinProc优先捕捉到鼠标消息,然后使用IsControlMouseMsg函数进行消息转发给图形子控件(意外发现OnClick是由WM_LBUTTONUP触发的)

    这是一个再普通不过的Button1Click执行体: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('I am B ...

  8. ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决的方法

    fragment中加入了button和checkbox这些控件.此时这些子控件会将焦点获取到.所以经常当点击item时变化的是子控件.item本身的点击没有响应. 这时候就能够使用descendant ...

  9. 控件之ReleLayout属性

    Android:控件布局(相对布局)RelativeLayout RelativeLayout是相对布局控件:以控件之间相对位置或相对父容器位置进行排列. 相对布局常用属性: 子类控件相对子类控件:值 ...

随机推荐

  1. python socket网络编程之粘包问题详解

    一,粘包问题详情 1,只有TCP有粘包现象,UDP永远不会粘包 你的程序实际上无权直接操作网卡的,你操作网卡都是通过操作系统给用户程序暴露出来的接口,那每次你的程序要给远程发数据时,其实是先把数据从用 ...

  2. pip: unsupported locale setting

    在终端里输入 $ export LC_ALL=C 可解决 http://stackoverflow.com/questions/36394101/pip-install-locale-error-un ...

  3. print语句中逗号(,)和反斜杠(\)的区别

    逗号结尾:   禁止输出换行反斜杠结尾:强制输出换行 >>> print ('A','B') #用一个逗号结尾就可以禁止输出换行 A B >>> print ('A ...

  4. 前端技术之_CSS详解第二天

    前端技术之_CSS详解第二天 1.css基础选择器 html负责结构,css负责样式,js负责行为. css写在head标签里面,容器style标签. 先写选择器,然后写大括号,大括号里面是样式. & ...

  5. AbstractQueuedSynchronizer源码解读--续篇之Condition

    1. 背景 在之前的AbstractQueuedSynchronizer源码解读中,介绍了AQS的基本概念.互斥锁.共享锁.AQS对同步队列状态流转管理.线程阻塞与唤醒等内容.其中并不涉及Condit ...

  6. How To determine DDIC Check Table, Domain and Get Table Field Text Data For Value?

     How To determineDDIC Check Table, Domain and Get Table Field Text Data For Value? 1.Get Table Fie ...

  7. RunLoop总结:RunLoop基础知识

    没有实际应用场景,很难理解一些抽象空洞的东西,所以前面几篇文章先介绍了RunLoop的几个使用场景. 另外AsyncDisplayKit中也有大量使用RunLoop的示例. 关于实际的使用RunLoo ...

  8. vbs注册表增删改

    vbs注册表增删改非常简单.过去竟然能忍受那么多次手动在注册表编辑器操作...应该认真反思自己的懒惰了. Dim op Set op=WScript.CreateObject("WScrip ...

  9. Android简易实战教程--第三十三话《 AsyncTask异步倒计时》

    本篇小案例,完成一个倒计时.方式选择AsyncTask.代码贴在下面: 布局文件soeasy: <LinearLayout xmlns:android="http://schemas. ...

  10. Spark运行架构

    http://blog.csdn.net/pipisorry/article/details/52366288 1. Spark运行架构 1.1 术语定义 lApplication:Spark App ...