0821基础控件-作业(UIView常用属性)

一、UIView的常用属性1——父子视图属性


1、 superview

获得自己的父控件对象

2、subviews

获得自己的所有子控件对象

注意:

–一个视图最多只能有一个父视图

–一个视图可以有多个子视图

代码段1.1:


// 系统加载完Storyboard之后,会自动执行
- (void)viewDidLoad
{
[super viewDidLoad];

// 如果这句话没有执行,一定是StoryBoard出了问题
NSLog(@"View Did Load");

// SuperView
UIView *superView = self.view.superview;
// NSLog可以使用%@ Log所有的“对象”,就是在定义的时候,使用了*这个标记
// ViewController会自动有一个UIView,这个是RootView,根视图没有superview
NSLog(@"%@", superView);

NSArray *subviews = [self.view subviews];
NSLog(@"子视图数量 %d", [subviews count]);

for (UIView *view in self.view.subviews) {
NSLog(@"%@", view);
}

// 看子视图的子视图
UIView *sView = _subView1.superview;
NSLog(@"子视图的父视图 %@", sView);

NSArray *subViews1 = [_subView1 subviews];
for (UIView *view in subViews1) {
NSLog(@"黄色视图的子视图是 %@", view);
}
}

二、UIView的常用属性2——位置尺寸属性


1、frame

控件所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)

2、bounds

控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x和y永远为0)

3、center

控件中点的位置(以父控件的左上角为坐标原点),通过center属性设置视图位置更加方便

注意

–用frame和center可以修改UIView的位置

–用frame和bounds可以修改UIView的尺寸

–通常:修改自身位置大小时使用frame,而子视图(控件)在设置位置时,会相对父视图的bounds进行设置


代码段2.1:


// 查看边框
- (IBAction)viewViewFrame:(id)sender
{
// 需要用到一个Fundation的函数,讲一个矩形定义转换成字符串
NSLog(@"frame: %@", NSStringFromCGRect(_subView1.frame));
}

// 查看边界
- (IBAction)viewViewBounds:(id)sender
{
NSLog(@"bounds: %@", NSStringFromCGRect(_subView1.bounds));
}

// 查看中心点
- (IBAction)viewViewCenter:(id)sender
{
NSLog(@"center: %@", NSStringFromCGPoint(_subView1.center));
}

代码段2.2:


#pragma mark - 查看视图属性
- (IBAction)viewProperties:(UIButton *)sender
{
NSLog(@"%d", sender.tag);
switch (sender.tag) {
case 0:
NSLog(@"frame: %@", NSStringFromCGRect(_subView1.frame));
break;
case 1:
NSLog(@"bounds: %@", NSStringFromCGRect(_subView1.bounds));
break;
case 2:
NSLog(@"center: %@", NSStringFromCGPoint(_subView1.center));
break;

default:
break;
}
}

注:可以通过Xcode可视化界面或者setTag方法来设置按钮的tag属性;

代码段2.3:


// 旋转视图
- (IBAction)rotationView:(id)sender
{
// 旋转角度的参数是弧度值,弧度制是一个浮点数,180度的角度对应的弧度值是PI , 90 = PI / 2, 45 = PI / 4
// 使用TransformMakexxx方法是相对视图初始位置的形变
CGAffineTransform transform = CGAffineTransformRotate(_subView1.transform, M_PI_4);

[_subView1 setTransform:transform];
}

// 缩放视图
- (IBAction)scaleView:(id)sender
{
// 点一下,放大,tag = 1
// 再点一下,缩小 tag = 0

// sx表示水平方向缩放的比例
// sy表示垂直方向缩放的比例
CGAffineTransform transform;

if (_subView1.tag == 0) {
transform = CGAffineTransformScale(_subView1.transform, 1.2, 1.5);
[_subView1 setTag:1];
} else {
// 缩小的时候,需要注意比例的处理
transform = CGAffineTransformScale(_subView1.transform, 1.0 / 1.2, 1.0 / 1.5);
[_subView1 setTag:0];
}

[_subView1 setTransform:transform];
}

// 平移视图
- (IBAction)translationView:(id)sender
{
CGAffineTransform transform;

// 如果tag == 0,向下移动300个点
// 如果tag == 1,回复初始位置
if (_subView1.tag == 0) {

transform = CGAffineTransformMakeTranslation(10.0, 300.0);
[_subView1 setTag:1];
} else {
transform = CGAffineTransformMakeTranslation(0, 0);
[_subView1 setTag:0];
}

[_subView1 setTransform:transform];
}

代码段2.4:


// 形变操作
- (IBAction)transformAction:(UIButton *)sender
{
CGAffineTransform transform;

// 根据按钮的tag,来决定对子视图做什么形变操作
switch (sender.tag) {
case 0: // 旋转
transform = CGAffineTransformRotate(_subView1.transform, M_PI_4);

break;
case 1: // 缩放
if (_subView1.tag == 0) {
transform = CGAffineTransformScale(_subView1.transform, 1.2, 1.5);
[_subView1 setTag:1];
} else {
// 缩小的时候,需要注意比例的处理
transform = CGAffineTransformScale(_subView1.transform, 1.0 / 1.2, 1.0 / 1.5);
[_subView1 setTag:0];
}

break;
case 2: // 平移
if (_subView1.tag == 0) {

transform = CGAffineTransformMakeTranslation(10.0, 300.0);
[_subView1 setTag:1];
} else {
transform = CGAffineTransformMakeTranslation(0, 0);
[_subView1 setTag:0];
}
break;

default:
break;
}

三、UIView的常用属性3——标记属性


1、tag整数,控件的ID(标记),父控件可以通过tag来找到或区分子控件,可以通过以下方法设置tag属性:

[self.button setTag:0];

可以再程序代码中动态地更新tag属性值,以达到不同的按钮操作效果。

四、UIView的常用属性4——形变属性


1、transform

控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

注意:

–UIView一次只能应用一个形变属性

–设置transfrom会改变UIView的frame属性,但不会改变bounds属性

–CGAffineTransformMakeScale相对UIView的初始状态进行形变

–CGAffineTransformScale相对UIView的当前状态进行形变

五、UIView封装的简单动画效果

[UIView beginAnimations:nil context:nil];
// 设置动画持续时间
[UIView setAnimationDuration:.3];
// 需要动画的代码段
[UIView commitAnimations];

代码5.1:


// 定义动画效果
// [UIView beginAnimations:nil context:nil];
// // 默认动画时间长度是0.2秒
// [UIView setAnimationDuration:3.0f];

[UIView animateWithDuration:2.0f animations:^{
// 设置子视图的形变属性
[_subView1 setTransform:transform];
} completion:^(BOOL finished) {
[UIView animateWithDuration:1.0f animations:^{
// 设置视图背景颜色
[_subView1 setBackgroundColor:[UIColor redColor]];
// 设置视图透明度
[_subView1 setAlpha:0.1f];
}];
NSLog(@"动画完成");
}];

// 提交动画效果
// [UIView commitAnimations];

NSLog(@"动画提交");
}

六、UIView封装了三个块动画方法


1、[UIView animateWithDuration:animations:]

2、[UIView animateWithDuration:animations:completion:]

3、[UIView animateWithDuration: delay: options: animations: completion:]

注意:

对比beginAnimations动画的方式,块动画具有以下几点优势:

1、可以在动画完成时做一些其他的任务

2、可以设置动画延迟及动画效果选项

3、块动画支持嵌套

时间: 2024-12-17 07:05:48

0821基础控件-作业(UIView常用属性)的相关文章

0821基础控件-作业(简易计算器,QQ登录界面)

简易计算器 一.将NSString类型转换成NSInteger类型 [text integerValue]; //这个NSInteger类型在32/64位系统下能够自动转换所占字节数 二.定义NSInteger类型数据: NSInteger num = [text interValue]; //不需要* QQ登录界面 一.可以设置在文本框中输入完毕回车跳转至其他文本框的效果 1.首先要由ViewController类实现<UITextFieldDelegate>协议,这样可以在.m文件中实现-

0821基础控件(UILabel常用属性)

一.UILabel常用属性1--实例化和设置文字 // 实例化UILabel并指定其边框 UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0.0, 210.0, 320.0, 40.0)]; // 设置label显示的文本 [label setText:@"Hello World"]; // 设置字体和字体大小 [label setFont:[UIFont fontWithName:@"Helvetica-B

0821基础控件(UIButton常用属性)

一.可以通过代码的方式创建UIButton 1.通用实例化对象方法: UIButton *button = [[UIButton alloc] initWithFrame:rect]; 2.快速实例化对象方法: UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 提示: 在OC开发中,实例化任何类型的非自定义对象,都请首先尝试一下是否存在快速定义方法.如果存在快速定义方法,就尽量不要使用init之类的方法实例

DEV控件:gridControl常用属性设置(转)

DEV控件:gridControl常用属性设置    1.隐藏最上面的GroupPanel   gridView1.OptionsView.ShowGroupPanel=false;    2.得到当前选定记录某字段的值   sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString();   3.数据只读   gridView1.OptionsBehavior.Editable=false;   4.不显示MasterDe

DEV控件:gridControl常用属性设置【转载】

DEV控件:gridControl常用属性设置  1.隐藏最上面的GroupPanel   gridView1.OptionsView.ShowGroupPanel=false;  2.得到当前选定记录某字段的值   sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString(); 3.数据只读   gridView1.OptionsBehavior.Editable=false; 4.不显示MasterDetailView

DEV控件:gridControl常用属性设置(转载)

特别长,先撸下来再说 1.隐藏最上面的GroupPanel  gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值  sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString(); 3.数据只读  gridView1.OptionsBehavior.Editable=false; 4.不显示MasterDetailView  gridView1.Option

DEV控件:gridControl常用属性设置

1.隐藏最上面的GroupPanel  gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值  sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString(); 3.数据只读  gridView1.OptionsBehavior.Editable=false; 4.不显示MasterDetailView  gridView1.OptionsDetail.Ena

iOS UI基础控件之UIView 详解

UIView 简介 什么是UIView UIView是窗口上的一块区域,是iOS中所有控件的基类,我们在app中所有能看见的都是直接或间接继承与UIView的.我们把UIView叫做视图. UIView的作用 负责内部区域的内容渲染. 负责内部区域的触摸事件. 管理本身的所有子视图. 处理基本的动画. UIView创建与使用 创建UIView //通过frame创建View UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100,

IOS的segmentedControl(分段器控件)的一些常用属性

#pragma mark - 创建不同的分段器 //初始化方法:传入的数组可以是字符串也可以是UIImage对象的图片数组 UISegmentedControl *mysegmented = [[UISegmentedControl alloc] initWithItems:@[@"左边",@"我是中间",@"右边"]]; mysegmented.frame = CGRectMake(50, 200, kScreenWidth-100, 40);