码迷,mamicode.com
首页 > 其他好文 > 详细

iphone弹出窗口效果的制作(Core animation, CALayer)

时间:2014-07-22 23:17:15      阅读:437      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   width   

效果类似人人网微薄客户端的弹出效果

mamicode.com,码迷
static CGFloat kTransitionDuration = 0.3;
- (void)initView
{
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    if (!window)
    {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }
    
    _backgroundView = [[UIView alloc] initWithFrame:window.bounds];
    
    // 这个可以使背景变成灰色,类似UIAlertView弹出的效果
   _backgroundView.backgroundColor =  [[UIColor blackColor] colorWithAlphaComponent:0.35];

 // 叠加到window上,这样他的父窗口就无法再响应点击消息了.
    [window addSubview:_backgroundView];
    
    self.frame = CGRectMake(10, 60, 300, 380);
    [_backgroundView addSubview:self];
    self.backgroundColor = [UIColor orangeColor];
    
    // 一系列动画效果, 先放大0.1, 在缩小0.1,随后还原原始大小,达到反弹效果
    self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.05, 0.05);
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:kTransitionDuration/1.5];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(bounceAnimationStopped)];
    self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1);
    [UIView commitAnimations];
}

- (void)bounceAnimationStopped {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:kTransitionDuration/2];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(bounce2AnimationStopped)];
    self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9);
    [UIView commitAnimations];
}

- (void)bounce2AnimationStopped {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:kTransitionDuration/2];
    self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);
    [UIView commitAnimations];
}
mamicode.com,码迷

如果想实现圆角的视图:

mamicode.com,码迷
 CALayer *subLayer = [CALayer layer];
    subLayer.backgroundColor = [UIColor whiteColor].CGColor;
    subLayer.shadowOffset = CGSizeMake(0, 10);
    subLayer.shadowRadius = 5.0;
    subLayer.shadowColor = [UIColor blackColor].CGColor;
    subLayer.shadowOpacity = 0.8;
    subLayer.frame = CGRectMake(30, 30, 150, 190);
    subLayer.cornerRadius = 10;
    subLayer.borderColor =  [[UIColor blackColor] colorWithAlphaComponent:0.75].CGColor;
    subLayer.borderWidth = 4;
    [self.layer addSublayer:subLayer];
mamicode.com,码迷

// 如果在层上添加的视图如图片比父视图大,应该试用maskToBounds = YES;

iphone弹出窗口效果的制作(Core animation, CALayer),码迷,mamicode.com

iphone弹出窗口效果的制作(Core animation, CALayer)

标签:style   blog   http   java   color   width   

原文地址:http://www.cnblogs.com/taintain1984/p/3699759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!