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];

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-11 20:15:48

iOS--为视图添加阴影的相关文章

Xamarin iOS教程之添加和定制视图

Xamarin iOS教程之添加和定制视图 Xamarin iOS用户界面——视图 在iPhone或者iPad中,用户看到的摸到的都是视图.视图是用户界面的重要组成元素.例如,想要让用户实现文本输入时,需要使用输入文本的视图:想要让用户显示图像时,需要使用显示图像的视图.本章将为开发者详细讲解如何构建视图. Xamarin iOS视图 在应用程序开发中,最常见的视图如表2-1所示. 表2-1  常用视图   Xamarin iOS添加和定制视图 本节将主要讲解视图的两种添加方式:一种是使用Int

ios开发之--为父view上的子view添加阴影

项目中碰到一个问题,在tableview的headerview里面有很一个子view,设计师的要求是在下方添加一个阴影,效果如下: 以前的实现思路就是,代码如下: 添加阴影 调用视图的 layer CALayer *layer = [imageView layer]; layer.shadowOffset = CGSizeMake(0, 3); //(0,0)时是四周都有阴影 layer.shadowRadius = 5.0; layer.shadowColor = [UIColor black

ios开发之手势动作状态细分state,同一视图添加两个手势

1.比如拖拽一个视图,形成类似scrollView的翻页形式 在拖拽的方法里判断拖拽的状态state属性,根据状态不同执行自己需要的效果. 2.同一视图添加两个手势,需要使用手势的代理方法.允许此操作.(可看手势演讲稿) 版权声明:本文为博主原创文章,未经博主允许不得转载.

iOS TabBar添加阴影

效果图如下所示: 直接上代码 //移除顶部线条 self.tabBar.backgroundImage = [UIImage new]; self.tabBar.shadowImage = [UIImage new]; //添加阴影 self.tabBar.layer.shadowColor = [UIColor lightGrayColor].CGColor; self.tabBar.layer.shadowOffset = CGSizeMake(0, -5); self.tabBar.lay

ANDROID L——Material Design详解(视图和阴影)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: 昨天凌晨Google刚刚确认Android L就是Android Lollipop(5.0). Google之前就已经提前推出了Android L Developer Preview(开发者预览版)来帮助开发者更快的了解Android特性,而不久前也推出了64位的模拟器镜像,而且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市. 相信And

IOS 集合视图指南1:介绍

About iOS Collection Views(关于IOS集合视图) A collection view is a way to present an ordered set of data items using a flexible and changeable layout. The most common use for collection views is to present items in a grid-like arrangement, but collection v

UIVisualEffectView为视图添加特殊效果

在iOS 8后,苹果开放了不少创建特效的接口,其中就包括创建毛玻璃(blur)的接口. 通常要想创建一个特殊效果(如blur效果),可以创建一个UIVisualEffectView视图对象,这个对象提供了一种简单的方式来实现复杂的视觉效果.这个可以把这个对象看作是效果的一个容器,实际的效果会影响到该视图对象底下的内容,或者是添加到该视图对象的contentView中的内容. 我们举个例子来看看如果使用UIVisualEffectView: 1 2 3 4 5 6 7 let bgView: UI

[Swift通天遁地]六、智能布局-(5)给视图添加Align(对齐)和Fill(填充的约束以及Label的约束

本文将演示如何给视图添加Align(对齐)和Fill(填充的约束以及Label的约束. 锚点默认位于视图中心点的位置. 首先确保在项目中已经安装了所需的第三方库. 点击[Podfile],查看安装配置文件. 1 platform :ios, ‘12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Neon' 7 end 根据配置文件中的相关配

【IOS开发—视图控制器】

一.UIViewController 视图控制器是UIViewController类或者其子类对象,每个视图控制器都负责管理一个视图层次结构.在UIViewController中有一个重要的UIView属性, 这个view就是这个视图层的根视图,当程序将view作为子视图加入窗口时,也会加入UIViewController对象所管理的整个视图层次结构. 视图控制器只有在将某个视图显示在屏幕上时,相应的视图控制器才会创建其视图,这种延迟加载视图的做法能提高内存的使用效率.视图控制器创建视图的方式有