UIController子类控件 UI_06
是用来显示图片的控件,相当于相框,用来显示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 对象
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];
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];
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];
- (void)handleSwitch: (UISwitch *)aswitch{
//首先应该或许开关控件当前的状态
switch ((int)aswitch.on) {
case YES:
NSLog(@"开了");
break;
case NO:
NSLog(@"关了");
break;
default:
break;
}
加减控件 继承自 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);
分段控制器,此控件有多个分段组成,每一个分段相当于一个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];
————————————————————
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;
}
滑块控件,继承自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];
-
(void)handleSlinder
: (UISlider
*)aSlider{
//通过滑块控制视图的透明度
self.view.alpha
=
aSlider.value;
//value
返回的是当前滑块所在位置代表的数值
//NSLog(@"%.2f",aSlider.value);//验证使用,用过要注掉
总结:UIControll 是控制控件的基类,凡是继承自该类的子类都可以通过addTarget:
action: forControlEvents : 这个方法添加响应时间,UIontrol类的实现类似我们学过的target ...
action 设计模式,所以如果你想自定义一个视图,而且还是能够响应事件的,那就让它继承自UIControl;
UIController子类控件 UI_06的更多相关文章
- TControl.WMLButtonUp的inherited的作用——是为了给子类控件新的处理消息的机会
意外注意到这个小细节: procedure TControl.WMLButtonUp(var Message: TWMLButtonUp); begin inherited; // 注意,如果是直接点 ...
- ListView中Item与Checkable子类控件抢焦点问题
Android开发中,经常需要为ListView定制Adapter,绑定各种子类控件.如果Item包含Button等Checkable的控件,那么就会发生点击Item无法响应的问题.原因是自己定义的I ...
- UWP开发必备:常用数据列表控件汇总比较
今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...
- Android ListView 子控件点击事件
android:descendantFocusability beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只 ...
- Android:控件布局(相对布局)RelativeLayout
RelativeLayout是相对布局控件:以控件之间相对位置或相对父容器位置进行排列. 相对布局常用属性: 子类控件相对子类控件:值是另外一个控件的id android:layout_above-- ...
- Android关于ListView中item与控件抢夺焦点的那些事
在开发中,listview可以说是我们使用最频繁的控件之一了,但是关于listview的各种问题也是很多.当我们使用自定义布局的Listview的时候,如果在item的布局文件里面存在Button或者 ...
- OnClick事件的Sender参数的前世今生——TWinControl.WinProc优先捕捉到鼠标消息,然后使用IsControlMouseMsg函数进行消息转发给图形子控件(意外发现OnClick是由WM_LBUTTONUP触发的)
这是一个再普通不过的Button1Click执行体: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('I am B ...
- ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决的方法
fragment中加入了button和checkbox这些控件.此时这些子控件会将焦点获取到.所以经常当点击item时变化的是子控件.item本身的点击没有响应. 这时候就能够使用descendant ...
- 控件之ReleLayout属性
Android:控件布局(相对布局)RelativeLayout RelativeLayout是相对布局控件:以控件之间相对位置或相对父容器位置进行排列. 相对布局常用属性: 子类控件相对子类控件:值 ...
随机推荐
- 如何找回Oracle所有用户丢失的密码
如何找回Oracle所有用户丢失的密码: 方法一:1.以操作系统验证的方式登录 SQL>conn / as sysdba; 2.查看系统中的用户名. SQL>select USERNAME ...
- Flume 读取RabbitMq消息队列消息,并将消息写入kafka
首先是关于flume的基础介绍 组件名称 功能介绍 Agent代理 使用JVM 运行Flume.每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks. Client ...
- Docker 列出镜像
使用 docker images 显示本地已有的镜像. $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu ...
- grab window
#include <Windows.h> #include <iostream> using namespace std; #if 0 int CaptureAnImage(/ ...
- CoreAnimation动画结构变量
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- x264源代码简单分析:滤波(Filter)部分
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- SQL Server 索引维护(1)——如何获取索引使用情况
前言: 在前面一文中,已经提到了三类常见的索引问题,那么问题来了,当系统出现这些问题时,该如何应对? 简单而言,需要分析现有系统的行为,然后针对性地对索引进行处理: 对于索引不足的情况:检查缺少索引的 ...
- java设计模式-----单例设计模式
设计模式是个很高深的东西,我也是略懂皮毛,下面让我用最简洁易懂的语言描述下单例设计模式吧. 一些人总结出来用来解决特定问题的固定的解决方案. 解决一个类在内存中只存在一个对象,想要保证对象的唯一. 1 ...
- [ExtJS5学习笔记]第三十一节 sencha extjs 5使用cmd生成的工程部署到tomcat服务器
本文地址:http://blog.csdn.net/sushengmiyan/article/details/42940883 本文作者:sushengmiyan ------------------ ...
- 安卓程序员要拿到5000和1w的薪资,分别需要掌握哪些技术?
这个是我在逛知乎的时候发现的一个帖子,在这里小小的整理了一下,收集了一些评论,然后我分享出来,希望对自己还有同行有所帮助. 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 链接 ...