当前位置:编程学习 > wap >>

IOS开发之UIView总结

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

 

C代码  performSelector: 
performSelector:withObject: 
performSelector:withObject:withObject: 

 实际调用

 

C代码  [self performSelector:@selector(displayViews) withObject:nil afterDelay:1.0f]; 

  有三个方法分别是

 

C代码  //父视图  
[self.view superview] 
//所有子视图 
 [self.view subviews] 
//自身的window 
 self.view.window 

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

 

C代码  NSArray *allSubviews(UIView *aView) 

    NSArray *results = [aView subviews]; 
    for (UIView *eachView in [aView subviews]) 
    { 
        NSArray *riz = allSubviews(eachView); 
        if (riz) { 
            results = [results arrayByAddingObjectsFromArray:riz]; 
        } 
    } 
    return results; 

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

 

C代码  // Return all views throughout the application 
NSArray *allApplicationViews() 

    NSArray *results = [[UIApplication sharedApplication] windows]; 
    for (UIWindow *window in [[UIApplication sharedApplication] windows]) 
    { 
        NSArray *riz = allSubviews(window); 
        if (riz) results = [results arrayByAddingObjectsFromArray: riz]; 
    } 
    return results; 

 
 找出所有的父视图

 

C代码  // Return an array of parent views from the window down to the view 
NSArray *pathToView(UIView *aView) 

    NSMutableArray *array = [NSMutableArray arrayWithObject:aView]; 
    UIView *view = aView; 
    UIWindow *window = aView.window; 
    while (view != window) 
    { 
        view = [view superview]; 
        [array insertObject:view atIndex:0]; 
    } 
    return array; 

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

 

C代码  //加一个视图到一个视图里面 
addSubview: 
//将一个视图移到前面 
bringSubviewToFront: 
//将一个视图推送到背后 
sendSubviewToBack: 
//把视图移除 
removeFromSuperview 
//插入视图 并指定索引 
insertSubview:atIndex: 
//插入视图在某个视图之上 
insertSubview:aboveSubview: 
//插入视图在某个视图之下 
insertSubview:belowSubview: 
//交换两个位置索引的视图 
exchangeSubviewAtIndex:withSubviewAtIndex: 

视图回调

 

C代码  //当加入视图完成后调用 
(void)didAddSubview:(UIView *)subview 
//当视图移动完成后调用 
(void)didMoveToSuperview 
//当视图移动到新的WINDOW后调用 
(void)didMoveToWindow 
//在删除视图之后调用 
(void)willRemoveSubview:(UIView *)subview 
//当移动视图之前调用 
(void)didMoveToSuperview:(UIView *)subview 
//当视图移动到WINDOW之前调用 
(void)didMoveToWindow 

 给UIView设置标记和检索视图

 

C代码  myview.tag = 1001; 
[self.view viewWithTag:1001]; 
(UILable *)[self.view.window viewWithTag:1001]; 

视图的几何特征

 

C代码  //框架 
struct CGPoint { 
  CGFloat x; 
  CGFloat y; 
}; 
typedef struct CGPoint CGPoint; 
 
/* Sizes. */ 
 
struct CGSize { 
  CGFloat width; 
  CGFloat height; 
}; 
typedef struct CGSize CGSize; 
 
struct CGRect { 
  CGPoint origin; 
  CGSize size; 
}; 
typedef struct CGRect CGRect; 
 
 
 
CGRect rect = CGRectMake(0,0,320,480); 
UIView *view = [[UIView allow]initWithFrame:rect]; 
 
//将String转成CGPoint 如 @”{3.0,2.5}”    {x,y} 
CGPoint CGPointFromString ( 
   NSString *string 
); 
 
//将String转成CGRect  @”{{3,2},{4,5}}”  {{x,y},{w, h}} 
CGRect CGRectFromString ( 
   NSString *string 
); 
 
//将String转成CGSize @”{3.0,2.5}” {w, h} 
CGSize CGSizeFromString ( 
   NSString *string 
); 
 
//CGPoint转成NSString 
NSString * NSStringFromCGPoint ( 
   CGPoint point 
); 
 
//CGRect转成NSString 
NSString * NSStringFromCGRect ( 
   CGRect rect 
); 
 
//CGSize转成NSString 
NSString * NSStringFromCGSize ( 
   CGSize size 
); 
 
//对一个CGRect进行修改 以这个的中心来修改 正数表示更小(缩小) 负数表示更大(放大) 
CGRect CGRectInset ( 
   CGRect rect, 
   CGFloat dx, 
   CGFloat dy 
); 
 
//判断两个矩形是否相交 
bool CGRectIntersectsRect ( 
   CGRect rect1, 
   CGRect rect2 
); 
 
//初始为0的 
const CGPoint CGPointZero; 
const CGRect CGRectZero; 
const CGSize CGSizeZero; 
 
//创建CGPoint 
CGPoint CGPointMake ( 
   CGFloat x, 
   CGFloat y 
); 
//创建CGRect 
CGRect CGRectMake ( 
   CGFloat x, 
   CGFloat y, 
   CGFloat width, 
   CGFloat height 
); 
//创建CGSize 
CGSize CGSizeMake ( 
   CGFloat width, 
   CGFloat height 
); 

仿射变换

 

C代码  CGAffineTransform form = CGAffineTransformMakeRotation(PI); 
myview.transform = form; 

如想复原

 

C代码  myview.transform = CGAffineTransformIdentity; 

 直接设置视图的中心

 

C代码  myview.center = CGPointMake(100,200); 

 中心

 

C代码  CGRectGetMinX 
CGRectGetMinY 
//X的中间值 
CGRectGetMidX 
//Y的中间值 
CGRectGetMidY 
CGRectGetMaxX 
CGRectGetMaxY 

  定时器

 

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

  定义视图边界

C代码  typedef struct UIEdgeInsets { 
    CGFloat top, left, bottom, right

补充:移动开发 , IOS ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,