如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类

  1. performSelector:
  2. performSelector:withObject:
  3. performSelector:withObject:withObject:

实际调用

  1. [self performSelector:@selector(displayViews) withObject:nil afterDelay:1.0f];

有三个方法分别是

  1. //父视图
  2. [self.view superview]
  3. //所有子视图
  4. [self.view subviews]
  5. //自身的window
  6. self.view.window

循环一个视图下面所有视图的方法

  1. NSArray *allSubviews(UIView *aView)
  2. {
  3. NSArray *results = [aView subviews];
  4. for (UIView *eachView in [aView subviews])
  5. {
  6. NSArray *riz = allSubviews(eachView);
  7. if (riz) {
  8. results = [results arrayByAddingObjectsFromArray:riz];
  9. }
  10. }
  11. return results;
  12. }

循环返回一个APPLICATION里面所有的VIEW

  1. // Return all views throughout the application
  2. NSArray *allApplicationViews()
  3. {
  4. NSArray *results = [[UIApplication sharedApplication] windows];
  5. for (UIWindow *window in [[UIApplication sharedApplication] windows])
  6. {
  7. NSArray *riz = allSubviews(window);
  8. if (riz) results = [results arrayByAddingObjectsFromArray: riz];
  9. }
  10. return results;
  11. }

找出所有的父视图

  1. // Return an array of parent views from the window down to the view
  2. NSArray *pathToView(UIView *aView)
  3. {
  4. NSMutableArray *array = [NSMutableArray arrayWithObject:aView];
  5. UIView *view = aView;
  6. UIWindow *window = aView.window;
  7. while (view != window)
  8. {
  9. view = [view superview];
  10. [array insertObject:view atIndex:0];
  11. }
  12. return array;
  13. }

UIView提供了大量管理视图的方法

  1. //加一个视图到一个视图里面
  2. addSubview:
  3. //将一个视图移到前面
  4. bringSubviewToFront:
  5. //将一个视图推送到背后
  6. sendSubviewToBack:
  7. //把视图移除
  8. removeFromSuperview
  9. //插入视图 并指定索引
  10. insertSubview:atIndex:
  11. //插入视图在某个视图之上
  12. insertSubview:aboveSubview:
  13. //插入视图在某个视图之下
  14. insertSubview:belowSubview:
  15. //交换两个位置索引的视图
  16. exchangeSubviewAtIndex:withSubviewAtIndex:

视图回调

  1. //当加入视图完成后调用
  2. (void)didAddSubview:(UIView *)subview
  3. //当视图移动完成后调用
  4. (void)didMoveToSuperview
  5. //当视图移动到新的WINDOW后调用
  6. (void)didMoveToWindow
  7. //在删除视图之后调用
  8. (void)willRemoveSubview:(UIView *)subview
  9. //当移动视图之前调用
  10. (void)didMoveToSuperview:(UIView *)subview
  11. //当视图移动到WINDOW之前调用
  12. (void)didMoveToWindow

给UIView设置标记和检索视图

  1. myview.tag = 1001;
  2. [self.view viewWithTag:1001];
  3. (UILable *)[self.view.window viewWithTag:1001];

视图的几何特征

  1. //框架
  2. struct CGPoint {
  3. CGFloat x;
  4. CGFloat y;
  5. };
  6. typedef struct CGPoint CGPoint;
  7. /* Sizes. */
  8. struct CGSize {
  9. CGFloat width;
  10. CGFloat height;
  11. };
  12. typedef struct CGSize CGSize;
  13. struct CGRect {
  14. CGPoint origin;
  15. CGSize size;
  16. };
  17. typedef struct CGRect CGRect;
  18. CGRect rect = CGRectMake(0,0,320,480);
  19. UIView *view = [[UIView allow]initWithFrame:rect];
  20. //将String转成CGPoint 如 @”{3.0,2.5}”    {x,y}
  21. CGPoint CGPointFromString (
  22. NSString *string
  23. );
  24. //将String转成CGRect  @”{{3,2},{4,5}}”  {{x,y},{w, h}}
  25. CGRect CGRectFromString (
  26. NSString *string
  27. );
  28. //将String转成CGSize @”{3.0,2.5}” {w, h}
  29. CGSize CGSizeFromString (
  30. NSString *string
  31. );
  32. //CGPoint转成NSString
  33. NSString * NSStringFromCGPoint (
  34. CGPoint point
  35. );
  36. //CGRect转成NSString
  37. NSString * NSStringFromCGRect (
  38. CGRect rect
  39. );
  40. //CGSize转成NSString
  41. NSString * NSStringFromCGSize (
  42. CGSize size
  43. );
  44. //对一个CGRect进行修改 以这个的中心来修改 正数表示更小(缩小) 负数表示更大(放大)
  45. CGRect CGRectInset (
  46. CGRect rect,
  47. CGFloat dx,
  48. CGFloat dy
  49. );
  50. //判断两个矩形是否相交
  51. bool CGRectIntersectsRect (
  52. CGRect rect1,
  53. CGRect rect2
  54. );
  55. //初始为0的
  56. const CGPoint CGPointZero;
  57. const CGRect CGRectZero;
  58. const CGSize CGSizeZero;
  59. //创建CGPoint
  60. CGPoint CGPointMake (
  61. CGFloat x,
  62. CGFloat y
  63. );
  64. //创建CGRect
  65. CGRect CGRectMake (
  66. CGFloat x,
  67. CGFloat y,
  68. CGFloat width,
  69. CGFloat height
  70. );
  71. //创建CGSize
  72. CGSize CGSizeMake (
  73. CGFloat width,
  74. CGFloat height
  75. );

仿射变换

  1. CGAffineTransform form = CGAffineTransformMakeRotation(PI);
  2. myview.transform = form;

如想复原

  1. myview.transform = CGAffineTransformIdentity;

直接设置视图的中心

  1. myview.center = CGPointMake(100,200);

中心

  1. CGRectGetMinX
  2. CGRectGetMinY
  3. //X的中间值
  4. CGRectGetMidX
  5. //Y的中间值
  6. CGRectGetMidY
  7. CGRectGetMaxX
  8. CGRectGetMaxY

定时器

  1. NSTime *timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(move:) userInfo:nil repeats:YES];

定义视图边界

  1. typedef struct UIEdgeInsets {
  2. CGFloat top, left, bottom, right;  // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
  3. } UIEdgeInsets;
  4. //eg
  5. UIEdgeInsets insets = UIEdgeInsetsMake(5, 5, 5, 5);
  6. CGRect innerRect = UIEdgeInsetsInsetRect([aView bounds], insets);
  7. CGRect subRect = CGRectInset(innerRect, self.frame.size.width / 2.0f, self.frame.size.height / 2.0f);

仿射变换补充

//创建CGAffineTransform

  1. //angle 在0-2*PI之间比较好  旋转
  2. CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
  3. //缩放
  4. CGAffineTransform transform = CGAffineTransformMakeScale(0.5f,0.5f);
  5. //改变位置的
  6. CGAffineTransform transform = CGAffineTransformMakeTranslation(50,60);
  7. //修改CGAffineTransform
  8. //修改 缩放
  9. CGAffineTransform scaled = CGAffineTransformScale(transform, degree, degree);
  10. //修改 位置
  11. CGAffineTransform transform = CGAffineTransformTranslate(
  12. CGAffineTransform t,
  13. CGFloat tx,
  14. CGFloat ty
  15. );
  16. //修改角度
  17. CGAffineTransform transform = CGAffineTransformRotate (
  18. CGAffineTransform t,
  19. CGFloat angle
  20. );
  21. //最后设置到VIEW
  22. [self.view setTransform:scaled];

建立UIView动画块

//首先建立CGContextRef

  1. CGContextRef context = UIGraphicsGetCurrentContext();
  2. //标记动画开始
  3. [UIView beginAnimations:nil context:context];
  4. //定义动画加速或减速的方式
  5. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
  6. //定义动画的时长 1秒
  7. [UIView setAnimationDuration:1.0];
  8. //中间处理 位置变化,大小变化,旋转,等等的
  9. [[self.view viewWithTag:999] setAlpha:1.0f];
  10. //标志动画块结束
  11. [UIView commitAnimations];
  12. //还可以设置回调
  13. [UIView setAnimationDelegate:self];
  14. //设置回调调用的方法
  15. [UIView setAnimationDidStopSelector:@selector(animationFinished:)];

视图翻转

  1. UIView *whiteBackdrop = [self.view viewWithTag:100];
  2. // Choose left or right flip 选择左或右翻转
  3. if ([(UISegmentedControl *)self.navigationItem.titleView selectedSegmentIndex]){
  4. [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:whiteBackdrop cache:YES];
  5. }else{
  6. [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:whiteBackdrop cache:YES];
  7. }
  8. NSInteger purple = [[whiteBackdrop subviews] indexOfObject:[whiteBackdrop viewWithTag:999]];
  9. NSInteger maroon = [[whiteBackdrop subviews] indexOfObject:[whiteBackdrop viewWithTag:998]];
  10. //交换视图
  11. [whiteBackdrop exchangeSubviewAtIndex:purple withSubviewAtIndex:maroon];
  12. //还有上翻和下翻两种 如下
  13. typedef enum {
  14. //没有任何效果
  15. UIViewAnimationTransitionNone,
  16. UIViewAnimationTransitionFlipFromLeft,
  17. UIViewAnimationTransitionFlipFromRight,
  18. UIViewAnimationTransitionCurlUp,
  19. UIViewAnimationTransitionCurlDown,
  20. } UIViewAnimationTransition;

使用QuartzCore做动画

  1. //创建CATransition
  2. CATransition *animation = [CATransition animation];
  3. //设置代理
  4. animation.delegate = self;
  5. //设置动画过渡的时间
  6. animation.duration = 4.0f;
  7. //定义动画加速或减速的方式
  8. animation.timingFunction = UIViewAnimationCurveEaseInOut;
  9. //animation.type 表示设置过渡的种类 如 Fade,MoveIn,Push,Reveal
  10. switch ([(UISegmentedControl *)self.navigationItem.titleView selectedSegmentIndex]) {
  11. case 0:
  12. animation.type = kCATransitionFade;
  13. break;
  14. case 1:
  15. animation.type = kCATransitionMoveIn;
  16. break;
  17. case 2:
  18. animation.type = kCATransitionPush;
  19. break;
  20. case 3:
  21. animation.type = kCATransitionReveal;
  22. default:
  23. break;
  24. }
  25. //设置渐变的方向,上下左右
  26. if (isLeft)
  27. animation.subtype = kCATransitionFromRight;
  28. else
  29. animation.subtype = kCATransitionFromLeft;
  30. // Perform the animation
  31. UIView *whitebg = [self.view viewWithTag:10];
  32. NSInteger purple = [[whitebg subviews] indexOfObject:[whitebg viewWithTag:99]];
  33. NSInteger white = [[whitebg subviews] indexOfObject:[whitebg viewWithTag:100]];
  34. [whitebg exchangeSubviewAtIndex:purple withSubviewAtIndex:white];
  35. [[whitebg layer] addAnimation:animation forKey:@"animation"];

animation.type还可以用以下的赋值

  1. switch (theButton.tag) {
  2. case 0:
  3. animation.type = @"cube";
  4. break;
  5. case 1:
  6. animation.type = @"suckEffect";
  7. break;
  8. case 2:
  9. animation.type = @"oglFlip";
  10. break;
  11. case 3:
  12. animation.type = @"rippleEffect";
  13. break;
  14. case 4:
  15. animation.type = @"pageCurl";
  16. break;
  17. case 5:
  18. animation.type = @"pageUnCurl";
  19. break;
  20. case 6:
  21. animation.type = @"cameraIrisHollowOpen ";
  22. break;
  23. case 7:
  24. animation.type = @"cameraIrisHollowClose ";
  25. break;
  26. default:
  27. break;
  28. }

上面这个是转自这里的http://2015.iteye.com/blog/1122130

休眠一下

  1. [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0f]];

一个简单的通过图片做的动画

  1. // Load butterfly images
  2. NSMutableArray *bflies = [NSMutableArray array];
  3. for (int i = 1; i <= 17; i++){
  4. [bflies addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"bf_%d", i] ofType:@"png"]]];
  5. }
  6. UIImageView *butterflyView = [[UIImageView alloc] initWithFrame:CGRectMake(40.0f, 300.0f, 60.0f, 60.0f)];
  7. butterflyView.tag = 300;
  8. //设置动画的图片
  9. butterflyView.animationImages = bflies;
  10. //设置时间
  11. butterflyView.animationDuration = 0.75f;
  12. [self.view addSubview:butterflyView];
  13. //开始动画
  14. [butterflyView startAnimating];
  15. [butterflyView release];

IOS开发之UIView总结的更多相关文章

  1. ios开发之UIView和UIViewController

    UIView 表示屏幕上的一块矩形区域,负责渲染区域的内容,并且响应该区域内发生的触摸事件.它在 iOS App 中占有绝对重要的地位,因为 iOS 中几乎所有可视化控件都是 UIView 的子类. ...

  2. ios开发之UIView的frame、bounds跟center属性的区别(附图)

    博文暂时想到什么写什么,不顺理成章,不顺章成篇. 先看几个概念 坐标点Poit:向右侧为X轴正方向的值x,原点下侧为Y轴正方向的值y 大小Size:由宽度width和高度height构成,表示一个矩形 ...

  3. IOS开发之UIView的基本使用

    一.视图 1. iphone手机上的窗口就是UIWindow类的一个实例(1个手机应用只有一个UIWindow). 2.UIView类用于实现视图. UIView提供了方法来添加和删除子视图.一个视图 ...

  4. iOS开发之UIView的常见属性

    1.所有控件都继承自UIView,UIView的常见属性如下: @property(nonatomic,readonly) UIView *superview;获得自己的父控件对象 @property ...

  5. IOS开发之UIView总结1

    太长了,请看 http://blog.csdn.net/xdrt81y/article/details/9128695 performSelector: performSelector:withObj ...

  6. iOS开发之UIView

    在iPhone里你能看到的.摸到的,都是UIView. 视图坐标系统: UIKit中的坐标都是基于这样的坐标系统:以左上角为坐标的原点,原点向下和向右为坐标轴方向. 坐标值由浮点数来表示,内容的布局和 ...

  7. iOS开发之UISearchBar初探

    iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...

  8. iOS开发之loadView、viewDidLoad及viewDidUnload的关系

    iOS开发之loadView.viewDidLoad及viewDidUnload的关系 iOS开发之loadView.viewDidLoad及viewDidUnload的关系    标题中所说的3个方 ...

  9. IOS开发之ZBarReaderView的使用

    IOS开发之ZBarReaderView的使用 HOMEABOUTGUESTBOOKCATEGORIESTAGSLINKSSUBSCRIBE 当开发IOS程序中需要用到二维码识别功能的时候,zbar这 ...

随机推荐

  1. Windows failed to start.界面下修复win8引导

    首先要保证 系统本身是没有问题的 不是在装机的时候出现这种情况 那么可以按照以下方法来进行 首先要在另外一台电脑上将win8刻进u盘 启动时以u盘为第一启动项启动 进入win8装机界面 点击左下角的修 ...

  2. 第一种:NStread

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  3. iOS网络之数据请求GET和POST

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

  4. G - 小希的迷宫(并查集)

    1今天准备复习三道以前做过的题呢,结果只看了一道,也因为交题的时候没把测试时候为了方便而改的数字改过来而wrong answer,浪费了好长时间,啊啊啊~~ 不过这道题应该是掌握了,嘿嘿…… Desc ...

  5. net core开发环境准备

    net core开发环境准备 1.1  安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面. 根据操作系统, ...

  6. redis(一)简介

    啥也不说百度各种简介 推荐一个博客灰常详细的介绍  nosqlfan  接下来发布redis+USE_TCMALLOC 的安装配置,博客好多坑,找一篇好文真心难啊.  redis+keepalived ...

  7. hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询

    一開始实在是不知道怎么做,后来经过指导,猛然发现,仅仅须要记录某个区间内是否有值就可以. flag[i]:代表i区间内,共同拥有的蛋糕数量. 放置蛋糕的时候非常好操作,单点更新. ip:老鼠当前的位置 ...

  8. 【翻译自mos文章】当指定asm disk 为FRA时,11.2.0.3的dbua hang住

    当指定asm disk 为FRA时.11.2.0.3的dbua hang住 来源于: 11.2.0.3 DBUA Hangs While Specifying ASM Disk To FRA (文档 ...

  9. PS图片

    第二次练习PS,不知道找什么图片,就这么做着吧.然后自己学习了下动画制作,但是中间有些问题,需要再研究研究. 像 CS6中新建蒙版文档,画出的图形单位是厘米,怎么改为像素?(答案看后续博客....)

  10. MSSQL奇技淫巧

    MSSQL:获得库每个表的记录数和容量 sp_msforeachtable是MS未公开的存储过程: exec sp_msforeachtable @command1="print '?'&q ...