• iOS--为视图添加阴影


    iOS–为视图添加阴影

    情况一:视图添加圆角,在添加阴影

       //阴影视图
        self.viewShadow = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
        self.viewShadow.backgroundColor = [UIColor redColor];
        self.viewShadow.layer.shadowOpacity = 1;
        self.viewShadow.layer.cornerRadius = 5;
        self.viewShadow.layer.borderWidth = 1;
        self.viewShadow.layer.masksToBounds = YES;
        //阴影视图背景
        self.viewShadowBg = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
        self.viewShadowBg.layer.shadowOpacity = 1;
        self.viewShadowBg.layer.shadowOffset = CGSizeZero;
        self.viewShadowBg.layer.shadowColor = [UIColor greenColor].CGColor;
        self.viewShadowBg.layer.shadowRadius = 10;
        self.viewShadowBg.layer.borderWidth = 1;
        self.viewShadowBg.layer.borderColor = [UIColor grayColor].CGColor;
        self.viewShadowBg.layer.cornerRadius = 5;
    

    情况二:自定义视图阴影效果

    自定义视图阴影,我们用到的是这个属性:view.layer.shadowPath,我们通过这个属性来自定义视图阴影。

    贝塞尔曲线

    这里我们还用到了贝塞尔曲线,通过数学方式来描述图形效果,常见于计算机中图像的描述。objective-c中通过UIBezierPath来描述贝塞尔曲线。贝塞尔曲线知识点补充:
    Bezier曲线简介
    贝塞尔曲线-维基百科

    实现正常矩形效果:

        UIView *view = [[UIView alloc] init];
        view.frame = CGRectMake(100, 100, 100, 100);
        view.center = self.view.center;
        view.backgroundColor = [UIColor clearColor];
        view.layer.shadowColor = [UIColor blackColor].CGColor;
        view.layer.shadowOpacity = 0.7f;
        view.layer.shadowOffset = CGSizeMake(30.0f, 10.0f);
        view.layer.shadowRadius = 2.0f;
        view.layer.masksToBounds = NO;
        //正常矩形
        UIBezierPath *path = [UIBezierPath bezierPathWithRect:view.bounds];
        view.layer.shadowPath = path.CGPath;
        [self.view addSubview:view];

    实现自定义画梯形:

        UIView *view = [[UIView alloc] init];
        view.frame = CGRectMake(100, 100, 100, 100);
        view.center = self.view.center;
        view.backgroundColor = [UIColor clearColor];
        view.layer.shadowColor = [UIColor blackColor].CGColor;
        view.layer.shadowOpacity = 0.7f;
        view.layer.shadowOffset = CGSizeMake(30.0f, 10.0f);
        view.layer.shadowRadius = 2.0f;
        view.layer.masksToBounds = NO;
        //自定义画梯形
        CGSize size = view.bounds.size;
        UIBezierPath *path = [UIBezierPath bezierPath];
        [path moveToPoint:CGPointMake(size.width * 0.33f, size.height * 0.66f)];
        [path addLineToPoint:CGPointMake(size.width * 0.66f, size.height * 0.66f)];
        [path addLineToPoint:CGPointMake(size.width * 1.15f, size.height * 1.15f)];
        [path addLineToPoint:CGPointMake(size.width * -0.15f, size.height * 1.15f)];
        view.layer.shadowPath = path.CGPath;
        [self.view addSubview:view];

    实现自定义大小椭圆形:

        UIView *view = [[UIView alloc] init];
        view.frame = CGRectMake(100, 100, 100, 100);
        view.center = self.view.center;
        view.backgroundColor = [UIColor clearColor];
        view.layer.shadowColor = [UIColor blackColor].CGColor;
        view.layer.shadowOpacity = 0.7f;
        view.layer.shadowOffset = CGSizeMake(30.0f, 10.0f);
        view.layer.shadowRadius = 2.0f;
        view.layer.masksToBounds = NO;
        //自定义大小椭圆形
        CGRect ovalRect = CGRectMake(0, 0, 100, 20);
        UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:ovalRect];
        view.layer.shadowPath = path.CGPath;
        [self.view addSubview:view];
  • 相关阅读:
    转:单链表有环判断及其起始位置定位
    转:C++经典排序算法总结
    转:堆排序
    转载:C++快速排序
    转载:平衡二叉树(AVL Tree)
    设计模式原则
    适配器模式
    单例模式
    工厂模式
    Head First设计模式 装饰者模式
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026885.html
Copyright © 2020-2023  润新知