• 为视图添加倒影效果


    const CGFloat kReflectPercent = -0.25f;
    const CGFloat kReflectOpacity = 0.3f;
    const CGFloat kReflectDistance = 10.0f;
    + (void) addSimpleReflectionToView: (UIView *) theView
    {
    CALayer *reflectionLayer = [CALayer layer];
    reflectionLayer.contents = [theView layer].contents;
    reflectionLayer.opacity = kReflectOpacity;
    reflectionLayer.frame = CGRectMake(0.0f, 0.0f,
    theView.frame.size.width, theView.frame.size.height *
    kReflectPercent);
    CATransform3D stransform = CATransform3DMakeScale(1.0f, -1.0f,
    1.0f);
    CATransform3D transform = CATransform3DTranslate(stransform, 0.0f,
    -(kReflectDistance + theView.frame.size.height), 0.0f);
    reflectionLayer.transform = transform;
    reflectionLayer.sublayerTransform = reflectionLayer.transform;
    [[theView layer] addSublayer:reflectionLayer];
    }

    使用Core Graphics创建倒影:

    + (CGImageRef) createGradientImage: (CGSize)size
    {
    CGFloat colors[] = {0.0, 1.0, 1.0, 1.0};
    // Create gradient in gray device color space
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
    CGContextRef context = CGBitmapContextCreate(nil, size.width,
    size.height, 8, 0, colorSpace, kCGImageAlphaNone);
    CGGradientRef gradient =
    CGGradientCreateWithColorComponents(colorSpace, colors,
    NULL, 2);
    CGColorSpaceRelease(colorSpace);
    // Draw the linear gradient
    CGPoint p1 = CGPointZero;
    CGPoint p2 = CGPointMake(0, size.height);
    CGContextDrawLinearGradient(context, gradient, p1, p2,
    kCGGradientDrawsAfterEndLocation);
    // Return the CGImage
    CGImageRef theCGImage = CGBitmapContextCreateImage(context);
    CFRelease(gradient);
    CGContextRelease(context);
    return theCGImage;
    }
    // Create a shrunken frame for the reflection
    + (UIImage *) reflectionOfView: (UIView *)theView
    withPercent: (CGFloat) percent
    {
    // Retain the width but shrink the height
    CGSize size = CGSizeMake(theView.frame.size.width,
    theView.frame.size.height * percent);
    // Shrink the view
    UIGraphicsBeginImageContext(size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [theView.layer renderInContext:context];
    UIImage *partialimg =
    UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    // build the mask
    CGImageRef mask = [ImageHelper createGradientImage:size];
    CGImageRef ref = CGImageCreateWithMask(partialimg.CGImage, mask);
    UIImage *theImage = [UIImage imageWithCGImage:ref];
    CGImageRelease(ref);
    CGImageRelease(mask);
    return theImage;
    }
    const CGFloat kReflectDistance = 10.0f;
    + (void) addReflectionToView: (UIView *) theView
    {
    theView.clipsToBounds = NO;
    UIImageView *reflection = [[UIImageView alloc] initWithImage:
    [ImageHelper reflectionOfView:theView withPercent: 0.45f]];
    CGRect frame = reflection.frame;
    frame.origin = CGPointMake(0.0f, theView.frame.size.height +
    kReflectDistance);
    reflection.frame = frame;
    // add the reflection as a simple subview
    [theView addSubview:reflection];
    [reflection release];
    }

  • 相关阅读:
    hdu 2586(最近公共祖先LCA)
    hdu 3394(点双连通)
    hdu 4005(边双连通)
    hdu 2460(tarjan求边双连通分量+LCA)
    【转载】8天学通MongoDB——第四天 索引操作
    【转载】8天学通MongoDB——第三天 细说高级操作
    [转载]MongoDB开发学习 经典入门
    【原创】jQuery 仿百度输入标签插件
    ★《唐琅探案》后记【2】
    ★《唐琅探案》后记【1】
  • 原文地址:https://www.cnblogs.com/GnagWang/p/2182237.html
Copyright © 2020-2023  润新知