初见IOS的UI之:UI控件的属性frame bounds center 和transform

这些属性,内部都是结构体:CGRect CGPoint CGFloat

背景知识:所有的控件都是view的子类,屏幕就是一个大的view;每个view都有个viewController,它是view的管家,每个view对应着一个viewController,来管理view。

  1. frame & bounds & center

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

    1>
    frame可以修改对象的位置和尺寸

    2> bounds可以修改对象的尺寸

    3> center可以修改对象的位置,是对象的中心的x,y坐标

  

  2.首尾式动画

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

  // beginAnimations表示此后的代码要“参与到”动画中

  [UIView beginAnimations:nil
context:nil];

  // setAnimationDuration用来指定动画持续时间

  [UIView setAnimationDuration:2.0];

  self.headImageView.bounds = rect;

  // commitAnimations,将beginAnimation之后的所有动画提交并生成动画

  [UIView commitAnimations];

  3. transform属性

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

  在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度

  常用的创建transform结构体方法分两大类

  1> 创建“基于控件初始位置”的形变

  CGAffineTransformMakeTranslation

  CGAffineTransformMakeScale

  CGAffineTransformMakeRotation

  2> 创建“基于transform参数”的形变,返回的时当前的坐标值,不需要一直计算,这个比较常用

  所以会多一个参数:就是当前的控件对象;

  CGAffineTransformTranslate

  CGAffineTransformScale

  CGAffineTransformRotate

  补充:

  在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI

  正数表示顺时针旋转

  负数表示逆时针旋转

  提示:由于transform属性可以基于控件的上一次的状态进行叠加形变,例如,先旋转再平移

  因此在实际动画开发中,当涉及位置、尺寸形变效果时,大多修改控件的transform属性,

  而不是frame、bounds、center  

时间: 2024-11-05 20:11:10

初见IOS的UI之:UI控件的属性frame bounds center 和transform的相关文章

iOS开发UI篇—UITableview控件基本使

iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> @interface NJHero : NSObject /** * 头像 */ @property (nonatomic, copy) NSString *icon; /** * 名称 */ @property (nonatomic, copy) NSString *name; /** * 描述 */ @

iOS开发UI篇—UITableview控件使用小结

iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 2.告诉每组一共有多少行 方法:- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSIntege

iOS开发UI篇—UIPickerView控件简单介绍

iOS开发UI篇—UIPickerView控件简单介绍 一.UIPickerView 控件 1.简单介绍: 2.示例代码 TXViewController.m文件 1 // Created by 鑫 on 14-10-15. 2 3 // Copyright (c) 2014年 梁镋鑫. All rights reserved. 4 5 // 6 7 8 9 #import "TXViewController.h" 10 11 12 13 @interface TXViewContro

【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (w

网络操作不能直接写在主线程中 以及 为什么不能在子线程中更新UI控件的属性

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //注意: 所有网络操作不能直接写在主线程中 因为所有的网络操作都是耗时的,如果加载到主线程中,会导致与用户的交互出现问题 ,所以要加载到子线程中 // [self loadImage]; [self performSelectorInBackground:@selector(loadImage) withObject:nil]; } //加

UI控件tag属性和魔法数字的处理

说明:tag属性有很大的用处,它就好像每个UI控件的id,当多个按钮指向同一个监听方法时,可以给方法带参数UIButton,然后根据不同的tag值 来判断执行哪个按钮的监听事件: - (IBAction)up:(UIButton *)sender // 该方法有四个btn指向,tag值是下边的,即可根据不同tag值执行相应的代码 { //upMoveTag的tag是10 //bottomMoveTag:11 //leftMoveTag:12 //rightMoveTag:13 CGRect re

基类包括字段“ScriptManager1”,但其类型(System.Web.UI.ScriptManager)与控件(System.Web.UI.ScriptManager)的类型不兼容

首先说下原先的情况,就是原本老项目的Web解决方案是使用.net framework 2.0的老版本, 所以机器也安装过Microsoft ASP.NET 2.0 AJAX Extensions..AJAX插件.. 但是因为后面种种原因反正就是要升级到.net framework 3.5的版本. 因此导致出现 (基类包括字段“ScriptManager1”,但其类型(System.Web.UI.ScriptManager)与控件(System.Web.UI.ScriptManager)的类型不兼

第二课:IOS(App)UIImage控件与TextField控件学习

作为一名实习生我是1.3.5在办公室工作,2.4.6去另一个地方听课学习IOS(app)课程,为了不落下课程,我准备每天晚上把落下的课程自学一遍,把不懂的记下等去听课的时候问老师,希望自己能跟上学习的步伐,不浪费时间.这一课是前几天听的,今天一起也写上了. 第二课:IOS(App)UIImage控件与TextField控件的学习,代码如下 一:UIImage控件代码:把图片添加到视图中并设置大小,这里没有牵涉到图片背景的颜色设置,我猜想应该是没必要去设置的吧,因为没有按钮功能的话背景颜色也看不到

IOS开发之控件frame/bounds/center尺寸改变小技巧-简单给UIView新增分类(github链接)

大家是否还记得对控件的frame/bounds/center进行属性更改时的三部曲? 1>将结构体取出 2>改变取出后的结构体对应的数据 3>将修改后的结构体赋值给控件 CGRect frame = self.view.frame; // your code... frame.origin.x = frameX; // your code... self.view.frame = frame; 这在实际工作中需要更改相应属性的时候是很不方便的,所以考虑到直接在UIView的分类中添加相应