您的位置:首页 > 产品设计 > UI/UE

uiview

2013-12-02 11:29 996 查看
如果想调用某个类的某个方法可以写成这样,这个方法来自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;

};

typedefstruct CGPoint CGPoint;

/* Sizes. */

struct CGSize {

CGFloat width;

CGFloat height;

};

typedefstruct CGSize CGSize;

struct CGRect {

CGPoint origin;

CGSize size;

};

typedefstruct 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代码

typedefstruct UIEdgeInsets {

CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'

} UIEdgeInsets;

//eg

UIEdgeInsets insets = UIEdgeInsetsMake(5, 5, 5, 5);

CGRect innerRect = UIEdgeInsetsInsetRect([aView bounds], insets);

CGRect subRect = CGRectInset(innerRect, self.frame.size.width / 2.0f, self.frame.size.height / 2.0f);

仿射变换补充//创建CGAffineTransformC代码

//angle 在0-2*PI之间比较好 旋转

CGAffineTransform transform = CGAffineTransformMakeRotation(angle);

//缩放

CGAffineTransform transform = CGAffineTransformMakeScale(0.5f,0.5f);

//改变位置的

CGAffineTransform transform = CGAffineTransformMakeTranslation(50,60);

//修改CGAffineTransform

//修改 缩放

CGAffineTransform scaled = CGAffineTransformScale(transform, degree, degree);

//修改 位置

CGAffineTransform transform = CGAffineTransformTranslate(

CGAffineTransform t,

CGFloat tx,

CGFloat ty

);

//修改角度

CGAffineTransform transform = CGAffineTransformRotate (

CGAffineTransform t,

CGFloat angle

);

//最后设置到VIEW

[self.view setTransform:scaled];

建立UIView动画块 //首先建立CGContextRefC代码

CGContextRef context = UIGraphicsGetCurrentContext();

//标记动画开始

[UIView beginAnimations:nil context:context];

//定义动画加速或减速的方式

[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

//定义动画的时长 1秒

[UIView setAnimationDuration:1.0];

//中间处理 位置变化,大小变化,旋转,等等的

[[self.view viewWithTag:999] setAlpha:1.0f];

//标志动画块结束

[UIView commitAnimations];

//还可以设置回调

[UIView setAnimationDelegate:self];

//设置回调调用的方法

[UIView setAnimationDidStopSelector:@selector(animationFinished:)];

视图翻转
C代码

UIView *whiteBackdrop = [self.view viewWithTag:100];

// Choose left or right flip 选择左或右翻转

if ([(UISegmentedControl *)self.navigationItem.titleView selectedSegmentIndex]){

[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:whiteBackdrop cache:YES];

}else{

[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:whiteBackdrop cache:YES];

}

NSInteger purple = [[whiteBackdrop subviews] indexOfObject:[whiteBackdrop viewWithTag:999]];

NSInteger maroon = [[whiteBackdrop subviews] indexOfObject:[whiteBackdrop viewWithTag:998]];

//交换视图

[whiteBackdrop exchangeSubviewAtIndex:purple withSubviewAtIndex:maroon];

//还有上翻和下翻两种 如下

typedefenum {

//没有任何效果

UIViewAnimationTransitionNone,

UIViewAnimationTransitionFlipFromLeft,

UIViewAnimationTransitionFlipFromRight,

UIViewAnimationTransitionCurlUp,

UIViewAnimationTransitionCurlDown,

} UIViewAnimationTransition;

使用QuartzCore做动画
C代码

//创建CATransition

CATransition *animation = [CATransition animation];

//设置代理

animation.delegate = self;

//设置动画过渡的时间

animation.duration = 4.0f;

//定义动画加速或减速的方式

animation.timingFunction = UIViewAnimationCurveEaseInOut;

//animation.type 表示设置过渡的种类 如 Fade,MoveIn,Push,Reveal

switch ([(UISegmentedControl *)self.navigationItem.titleView selectedSegmentIndex]) {

case 0:

animation.type = kCATransitionFade;

break;

case 1:

animation.type = kCATransitionMoveIn;

break;

case 2:

animation.type = kCATransitionPush;

break;

case 3:

animation.type = kCATransitionReveal;

default:

break;

}

//设置渐变的方向,上下左右

if (isLeft)

animation.subtype = kCATransitionFromRight;

else

animation.subtype = kCATransitionFromLeft;

// Perform the animation

UIView *whitebg = [self.view viewWithTag:10];

NSInteger purple = [[whitebg subviews] indexOfObject:[whitebg viewWithTag:99]];

NSInteger white = [[whitebg subviews] indexOfObject:[whitebg viewWithTag:100]];

[whitebg exchangeSubviewAtIndex:purple withSubviewAtIndex:white];

[[whitebg layer] addAnimation:animation forKey:@"animation"];

animation.type还可以用以下的赋值
C代码

switch (theButton.tag) {

case 0:

animation.type = @"cube";

break;

case 1:

animation.type = @"suckEffect";

break;

case 2:

animation.type = @"oglFlip";

break;

case 3:

animation.type = @"rippleEffect";

break;

case 4:

animation.type = @"pageCurl";

break;

case 5:

animation.type = @"pageUnCurl";

break;

case 6:

animation.type = @"cameraIrisHollowOpen ";

break;

case 7:

animation.type = @"cameraIrisHollowClose ";

break;

default:

break;

}

上面这个是转自这里的http://2015.iteye.com/blog/1122130休眠一下
C代码

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

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

// Load butterfly images

NSMutableArray *bflies = [NSMutableArray array];

for (int i = 1; i <= 17; i++){

[bflies addObject:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"bf_%d", i] ofType:@"png"]]];

}

UIImageView *butterflyView = [[UIImageView alloc] initWithFrame:CGRectMake(40.0f, 300.0f, 60.0f, 60.0f)];

butterflyView.tag = 300;

//设置动画的图片

butterflyView.animationImages = bflies;

//设置时间

butterflyView.animationDuration = 0.75f;

[self.view addSubview:butterflyView];

//开始动画

[butterflyView startAnimating];

[butterflyView release];

预留预留预留
评论发表评论

您还没有登录,请您登录后再发表评论langhua9527浏览: 179096 次

性别:


来自: 昆明



最近访客 更多访客>>

hxt30253

apple0668

cqpine

zxlaiye文章分类全部博客 (145)

javase (15)

javaee (10)

Struts (6)

hibernate (10)

spring (1)

struts2 (9)

html+javascript+css (13)

i love jquery (5)

AJAX (6)

数据库 (8)

java与XML (5)

JavaWeb (13)

ant+xdoclet (1)

JBPM (2)

Apache POI (1)

jfreechart (7)

ZK (1)

MyEclipse (1)

其它 (5)

Lucene (3)

JasperReport (8)

Linux (1)

Google+ G+ (0)

Google+ G+ (0)

Google+ (0)

G+ (0)

爱折腾 (0)

Twitter (0)

youtube (0)

facebook (0)

Android hosts文件 换行 window unix (1)

Objective-c (1)

社区版块我的资讯 (9)

我的论坛 (325)

我的问答 (190)

存档分类2012-02 (1)

2012-01 (3)

2011-12 (1)

更多存档...

最新评论hhb19900618: 你好 运行报错java.net.BindException: ...
Java服务器程序

tan8888: 即使是定义了compareTo ,treeSet还是会出现相同 ...
HashSet与TreeSet

chinalian: 谢谢,总结的很清晰。
Jquery模仿Google Suggest基于js的动态下拉菜单

jersey109: 这是什么 <filter-mapping> ...
使用Servlet Filter消
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uiview