`
lizaochengwen
  • 浏览: 667205 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iphone ios layer 教程应用

阅读更多
CALayer(层)是屏幕上的一个矩形区域,在每一个UIView中都包含一个根CALayer,在UIView上的所有视觉效果都是在这个Layer上进行的。
CALayer外形特征主要包括:
1、层的大小尺寸
2、背景色
3、内容(可以填充图片或者使用Core Graphics绘制的内容)
4、矩形是否使用圆角
5、矩形是否有阴影
Layer有很多种,最常用也是最基本的是CALayer,当然还包括其他的子类:
CAScrollerLayer 简化显示层的一部分
CATextLayer    文本层
CAGradientLayer、CAShapeLayer等等
使用层之前,需要在项目中引入QuartzCore.framework框架
实例:
新建XCode项目LayerSample,导入QuartzCore.famework

在LayerSampleViewController.h文件中引入:

#import <QuartzCore/QuartzCore.h>  
LayerSampleViewController.m文件,代码:  
//  
//  LayerSampleViewController.m  
//  LayerSample  
//  
//  Created by jordy on 11-3-28.  
//  Copyright 2011 vsp. All rights reserved.  
//  
  
#import "LayerSampleViewController.h"  
  
@implementation LayerSampleViewController  
  
// Implement loadView to create a view hierarchy programmatically, without using a nib.  
- (void)loadView {  
    UIView *rootView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];  
    rootView.backgroundColor = [UIColor whiteColor];  
    self.view = rootView;  
    [rootView release];  
  
    //加载layer  
  
    backLayer = [CALayer layer];  
    backLayer.backgroundColor = [UIColor orangeColor].CGColor;  
    backLayer.bounds = CGRectMake(10, 10, 1004, 728); //设置layer的区域  
    backLayer.position = CGPointMake(1024/2, 768/2-10); //设置layer坐标  
    [self.view.layer addSublayer:backLayer];  
  
}  
  
// Override to allow orientations other than the default portrait orientation.  
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {  
    return interfaceOrientation == UIInterfaceOrientationLandscapeLeft;  
}  
  
- (void)didReceiveMemoryWarning {  
    // Releases the view if it doesn't have a superview.  
    [super didReceiveMemoryWarning];  
  
    // Release any cached data, images, etc that aren't in use.  
}  
  
- (void)viewDidUnload {  
    // Release any retained subviews of the main view.  
    // e.g. self.myOutlet = nil;  
}  
  
- (void)dealloc {  
    [super dealloc];  
}  
  
@end  


运行程序:


为了区分背景UIView,我将UIView的背景色设置为白色,backLayer的背景色设置为橘黄色。
上图是一个矩形区域,如果设置矩形的四个角是椭圆角,可以添加属性:
backLayer.cornerRadius = 20.0; //矩形椭圆角的弧度半径
运行程序后,效果如图:

添加带阴影的子Layer(层),代码:

//添加子layer  
CALayer *cyanLayer = [CALayer layer];  
cyanLayer.backgroundColor = [UIColor cyanColor].CGColor;  
cyanLayer.bounds = CGRectMake(0, 0, 300, 300);  
cyanLayer.position = CGPointMake(180, 180);  
cyanLayer.shadowOffset = CGSizeMake(0, 3); //设置阴影的偏移量  
cyanLayer.shadowRadius = 10.0;  //设置阴影的半径  
cyanLayer.shadowColor = [UIColor blackColor].CGColor; //设置阴影的颜色为黑色  
cyanLayer.shadowOpacity = 0.9; //设置阴影的不透明度  
  
[backLayer addSublayer:cyanLayer];  



运行效果图:

给子Layer添加图片

//添加子image layer  
UIImage *image = [UIImage imageNamed:@"feiche.jpg"];  
CALayer *imageLayer = [CALayer layer];  
imageLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);  
imageLayer.contents = (id) image.CGImage;  
imageLayer.shadowOffset = CGSizeMake(0, 3); //设置阴影的偏移量  
imageLayer.shadowRadius = 10.0;  //设置阴影的半径  
imageLayer.shadowColor = [UIColor blackColor].CGColor; //设置阴影的颜色为黑色  
imageLayer.shadowOpacity = 0.9; //设置阴影的不透明度  
  
[backLayer addSublayer:imageLayer];  

运行效果,


图片加边框,代码:

imageLayer.borderColor = [UIColor grayColor].CGColor;  //边框颜色  
imageLayer.borderWidth = 2.0;  //边框宽度  



运行效果:

设置图片为椭圆角,代码:

imageLayer.cornerRadius = 10.0;  //设置layer圆角半径  
imageLayer.masksToBounds = YES;  //隐藏边界  



运行效果:

但是由于设置masksToBounds 属性为true所以Layer的阴影效果也就没有了。
之前我都是将图片另外在做有阴影效果的图片,这样显的比较真实,如果阴影部分只是填充边框即可,可以采用两个Layer来实现阴影效果,代码:

UIImage *image = [UIImage imageNamed:@"feiche.jpg"];  
//阴影layer  
CALayer *shadowLayer = [CALayer layer];  
shadowLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);  
shadowLayer.backgroundColor = [UIColor blueColor].CGColor;  
shadowLayer.shadowOffset = CGSizeMake(0, 3);  
shadowLayer.cornerRadius = 10.0;  
shadowLayer.shadowRadius = 10.0;  
shadowLayer.shadowColor = [UIColor blackColor].CGColor; //设置阴影的颜色为黑色  
shadowLayer.shadowOpacity = 1.0; //设置阴影的不透明度  
[backLayer addSublayer:shadowLayer];      
  
//添加子image layer  
CALayer *imageLayer = [CALayer layer];  
imageLayer.frame = CGRectMake(100, 100, image.size.width, image.size.height);  
imageLayer.contents = (id) image.CGImage;  
imageLayer.cornerRadius = 10.0;  //设置layer圆角半径  
imageLayer.masksToBounds = YES;  //隐藏边界  
imageLayer.borderColor = [UIColor grayColor].CGColor;  //边框颜色  
imageLayer.borderWidth = 2.0;  
[backLayer addSublayer:imageLayer];  



运行后效果:

分享到:
评论

相关推荐

    UI第一章:无限互联iOS开发教程课件-- iPhone开发入门

    ### UI第一章:无限互联iOS开发教程课件 -- iPhone开发入门 #### iOS系统概述与架构 - **iOS系统**:作为苹果公司专为iPhone、iPod touch及iPad设计的操作系统,iOS自诞生以来就以其简洁易用的特点受到全球用户的...

    IOS应用源码——TiledLayer_iphone.rar

    本文将深入探讨名为“TiledLayer_iphone”的源码项目,这是一个基于iOS平台的示例应用,它展示了如何利用Tiled Layer进行游戏或地图类应用的开发。Tiled Layer是Core Animation框架中的一个关键组件,它允许开发者...

    ios iphone iphone桌面截图代码

    在iOS平台上,为iPhone创建桌面截图的代码涉及到了多个关键概念和步骤。首先,我们要理解的是,iOS系统是封闭的,对于系统级别的操作,如截取屏幕内容,苹果提供了特定的API供开发者使用。以下是对这个主题的详细...

    ArcGIS API for iOS开发教程 v0.12

    ### ArcGIS API for iOS 开发教程知识点概览 #### 1. ArcGIS API for iOS 简介 ##### 1.1 概述 ArcGIS API for iOS 是由 ESRI 推出的一款专为 Apple 设备(如 iPhone、iPod Touch 和 iPad)设计的地图开发工具包。...

    iOS 应用开发学习指南

    ### iOS应用开发学习指南知识点概览 #### 一、iOS技术架构详解 - **iOS概述**: - iOS是苹果公司专为手持设备设计的操作系统,最初为iPhone开发,之后扩展到iPod touch、iPad及Apple TV等产品。 - 它负责管理设备...

    IOS应用源码之cocos2d-iphone-0.99.4.zip

    《深入剖析iOS应用源码:cocos2d-iphone-0.99.4》 在iOS应用开发中,cocos2d-iphone是一个广泛使用的2D游戏开发框架,它为开发者提供了强大的图形渲染、动画处理和物理模拟等功能。本文将深入探讨cocos2d-iphone ...

    iOS游戏应用源代码——cocos2d-cocos2d-iphone-extensions.zip

    1. **场景管理**:cocos2d-iphone使用场景(Scene)和层(Layer)的概念来组织游戏逻辑,使得游戏结构清晰,易于管理。 2. **渲染系统**:它支持精灵(Sprite)、纹理(Texture)、动作(Action)等2D图形元素,...

    Iphone Cocco2d教程

    2. **知易Cocco2D-iPhone开发教程-02.pdf**:此章节可能会深入讲解Cocos2D的核心组件,如Scene(场景)、Layer(层)、Sprite(精灵)等,以及如何使用这些组件构建游戏世界。 3. **知易Cocco2D-iPhone开发教程-03....

    IOS应用源码之【应用】-Siphon-SIP -VoIP for iPhone and iPod Touch.rar

    《iOS应用源码解析:Siphon-SIP - VoIP技术在iPhone和iPod Touch上的实现》 在iOS开发领域,VoIP(Voice over Internet Protocol)技术被广泛应用于实现高质量的实时语音通信。本篇文章将深入探讨Siphon-SIP项目,...

    cocos2d for ios iphone beta2 1.1

    《cocos2d for iOS iPhone Beta2 1.1:构建移动游戏开发的强大工具》 在iOS游戏开发领域,cocos2d是一个广泛使用的开源框架,尤其针对2D游戏的制作。cocos2d for iOS iPhone Beta2 1.1是这一框架的一个重要版本,专...

    IOS应用源码之cocos2d-iphone-0.7.3.zip

    《深入解析iOS应用源码:cocos2d-iphone-0.7.3》 cocos2d-iphone是一款强大的2D游戏开发框架,专为iOS平台设计,它基于开源的cocos2d-x项目,并针对Objective-C和Apple的UIKit进行了优化。在“cocos2d-iphone-0.7.3...

    iOS游戏应用源代码——cocos2d-cocos2d-iphone-Release.zip

    本篇将围绕"iOS游戏应用源代码——cocos2d-cocos2d-iphone-Release.zip"这一主题,深入探讨cocos2d框架的核心特性以及如何利用它来构建游戏。 cocos2d是基于Objective-C的开源游戏框架,特别针对iPhone和iPad平台...

    IOS源码应用Demo-iphone开发技巧UI篇之Tabbar Arrow效果 TabBarAnimation.zip

    总之,“IOS源码应用Demo-iphone开发技巧UI篇之Tabbar Arrow效果 TabBarAnimation.zip”提供了一个很好的学习平台,让开发者能够深入理解如何在iOS应用中创建定制的TabBar效果,同时也是一个展示iOS开发技能和创新...

    IOS应用源码之iphone开发技巧UI篇之Tabbar Arrow效果 TabBarAnimation.zip

    在iOS应用开发中,UI设计和交互体验是至关重要的元素,尤其是对于iPhone用户而言。"TabBar Animation"是一个专门探讨如何在iOS应用中实现TabBar箭头效果的源码项目,它可以帮助开发者提升应用程序的用户体验。这个...

    iOS游戏应用源代码——lhunath-Cocos2D-iPhone.old-9ab3d34.zip

    在iOS游戏开发领域,Cocos2D-iPhone是一个广受欢迎的开源框架,它为开发者提供了创建2D游戏、教育应用、演示和其他互动内容的强大工具。这个压缩包"lhunath-Cocos2D-iPhone.old-9ab3d34.zip"包含了由开发者lhunath...

    知易cocos2d-iphone完整教程

    本教程基于cocos2d-iphone框架,该框架是cocos2d的一个分支,专为iOS设备设计,旨在简化2D游戏和图形应用程序的开发过程。 cocos2d-iphone是一个开源的、跨平台的游戏开发框架,它提供了丰富的功能,包括场景管理、...

    iOS游戏应用源代码——swemoney-xcode_cocos2d_iphone_app_template.zip

    《iOS游戏应用源代码解析——基于Cocos2d-iPhone的Swemoney模板》 在iOS游戏开发领域,Cocos2d-iPhone是一款广受欢迎的游戏引擎,它为开发者提供了丰富的功能和高效的性能,使得创建2D游戏变得简单易行。本资源...

    IOS应用源码之【框架】iPhone完美模拟MAC的Dock托盘 动画效果.rar

    这份"【框架】iPhone完美模拟MAC的Dock托盘 动画效果.rar"源码正是为此目的而创建的,旨在为iOS用户带来更接近Mac OS的交互体验。 首先,我们需要理解Dock托盘的概念。在Mac OS中,Dock是位于屏幕底部的一个功能...

    知易Cocos2D-iPhone 游戏开发教程

    《知易Cocos2D-iPhone 游戏开发教程》是一本专为想要学习和掌握Cocos2D-iPhone框架进行游戏开发的初学者和爱好者准备的教程。Cocos2D-iPhone是一款强大的2D游戏引擎,适用于iOS平台,它提供了丰富的功能和高效的性能...

Global site tag (gtag.js) - Google Analytics