CAlayer層的屬性

iOS開發UI篇—CAlayer層的屬性

一、position和anchorPoint

1.簡單介紹

CALayer有2個非常重要的屬性:position和anchorPoint

@property CGPoint position;

用來設置CALayer在父層中的位置

以父層的左上角為原點(0, 0)

?

@property CGPoint anchorPoint;

稱為“定位點”、“錨點”

決定著CALayer身上的哪個點會在position屬性所指的位置

以自己的左上角為原點(0, 0)

它的x、y取值范圍都是0~1,默認值為(0.5, 0.5)

2.圖示

anchorPoint

它的取值為0~1

?

紅色圖層的anchorPoint為(0,0)

紅色圖層的anchorPoint為(0.5,0.5)

紅色圖層的anchorPoint為(1,1)

紅色圖層的anchorPoint為(0.5,0)

position和anchorPoint

添加一個紅色圖層到綠色圖層上,紅色圖層顯示到什么位置,由position屬性決定

假設紅色圖層的position是(100,100)

  到底把紅色圖層的哪個點移動到(100,100)的坐標位置,錨點。

  紅色圖層的錨點是(0,0)

紅色圖層的錨點是(0.5,0.5)

紅色圖層的錨點是(1,1)

紅色圖層的錨點是(0.5,0)

3.代碼示例

(1)沒有設置錨點。默認的錨點位置為(0.5,0.5)

復制代碼
 1 //
 2 //  YYViewController.m
 3 // 03-錨點等屬性  4 //  5 // Created by apple on 14-6-21.  6 // Copyright (c) 2014年 itcase. All rights reserved.  7 //  8  9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 13 @end 14 15 @implementation YYViewController 16 17 - (void)viewDidLoad 18 { 19  [super viewDidLoad]; 20 //創建圖層 21 CALayer *layer=[CALayer layer]; 22 //設置圖層的屬性 23 layer.backgroundColor=[UIColor redColor].CGColor; 24 layer.bounds=CGRectMake(0, 0, 100, 100); 25 //添加圖層 26  [self.view.layer addSublayer:layer]; 27 28 } 29 30 @end
復制代碼

顯示效果:

? ? ? ? ?

(1)設置錨點位置為(0,0)

復制代碼
 1 - (void)viewDidLoad
 2 {
 3  [super viewDidLoad];  4 //創建圖層  5 CALayer *layer=[CALayer layer];  6 //設置圖層的屬性  7 layer.backgroundColor=[UIColor redColor].CGColor;  8 layer.bounds=CGRectMake(0, 0, 100, 100);  9 //設置錨點為(0,0) 10 layer.anchorPoint=CGPointZero; 11 //添加圖層 12  [self.view.layer addSublayer:layer]; 13 } 14 @end
復制代碼

顯示效果:

二、隱式動畫

1.簡單說明

每一個UIView內部都默認關聯著一個CALayer,我們可用稱這個Layer為Root Layer(根層)

所有的非Root Layer,也就是手動創建的CALayer對象,都存在著隱式動畫

什么是隱式動畫?

當對非Root Layer的部分屬性進行修改時,默認會自動產生一些動畫效果

而這些屬性稱為Animatable Properties(可動畫屬性)

?

列舉幾個常見的Animatable Properties:

bounds:用于設置CALayer的寬度和高度。修改這個屬性會產生縮放動畫

backgroundColor:用于設置CALayer的背景色。修改這個屬性會產生背景色的漸變動畫

position:用于設置CALayer的位置。修改這個屬性會產生平移動畫

2.代碼示例

復制代碼
 1 //
 2 //  YYViewController.m
 3 // 04-隱式動畫  4 //  5 // Created by apple on 14-6-21.  6 // Copyright (c) 2014年 itcase. All rights reserved.  7 //  8  9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 @property(nonatomic,strong)CALayer *layer; 13 @end 14 15 @implementation YYViewController 16 17 - (void)viewDidLoad 18 { 19  [super viewDidLoad]; 20 //創建圖層 21 CALayer *mylayer=[CALayer layer]; 22 //設置圖層屬性 23 mylayer.backgroundColor=[UIColor brownColor].CGColor; 24 mylayer.bounds=CGRectMake(0, 0, 150, 100); 25 //顯示位置 26 mylayer.position=CGPointMake(100, 100); 27 mylayer.anchorPoint=CGPointZero; 28 mylayer.cornerRadius=20; 29 //添加圖層 30  [self.view.layer addSublayer:mylayer]; 31 self.layer=mylayer; 32 } 33 34 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 35 { 36 //隱式動畫 37 self.layer.bounds=CGRectMake(0, 0, 200, 60); 38 self.layer.backgroundColor=[UIColor yellowColor].CGColor; 39 } 40 @end
復制代碼

效果:

? ? ? ??

關閉隱式動畫:

1     [CATransaction begin];
2     [CATransaction setDisableActions:YES];
3     //隱式動畫 4 self.layer.bounds=CGRectMake(0, 0, 200, 60); 5 self.layer.backgroundColor=[UIColor yellowColor].CGColor; 6 [CATransaction commit];

3.如何查看CALayer的某個屬性是否支持隱式動畫?

  可以查看頭文件,看有沒有Animatable,如果有則表示支持。

也可以查看官方文檔

文檔中標明的這些屬性都是支持隱式動畫的

?

轉載自:http://www.cnblogs.com/wendingding/p/3800736.html

?

轉載于:https://www.cnblogs.com/wsnb/p/4878469.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Window Linux下實現指定目錄內文件變更的監控方法

轉自:http://qbaok.blog.163.com/blog/static/10129265201112302014782/ 對于監控指定目錄內文件變更,window 系統提供了兩個未公開API:SHChangeNotifyRegister SHChangeNotifyDeregister 分別用于注冊Notify以及監視。 同時,還提…

Odoo9發行說明

2015年10月1日,期待已久的Odoo9正式發布。本文是Odoo9正式版發行說明,基于官網資料翻譯。 譯者: 蘇州-微塵原文地址:https://www.odoo.com/page/odoo-9-release-notes譯文地址:http://blog.csdn.net/wangnan537/article/details/4…

揭秘史上最完美一步到位的搭建Andoriod開發環境

Windows環境下Android開發環境搭建雖然不難而且網上資料眾多,但是眾多資料如出一折 忽略了很多細節,最終還是沒能達到滿意效果。 基本步驟如下:JDK安裝、環境變量配置、Eclipse下載、AndoriodSDK下載安裝、下載配置ADT但是到這里還不算完美搞…

基于OpenCv的人臉檢測、識別系統學習制作筆記之二

在網上找到了一個博客,里面有大量內容適合初學者接觸和了解人臉檢測的博文,正好符合我目前的學習方面,故將鏈接放上來,后續將分類原博客的博文并加上學習筆記。 傳送門: http://blog.sina.com.cn/s/articlelist_160256…

URL 化

URL化。編寫一種方法,將字符串中的空格全部替換為%20。假定該字符串尾部有足夠的空間存放新增字符,并且知道字符串的“真實”長度。(注:用Java實現的話,請使用字符數組實現,以便直接在數組上操作。&#xf…

第一章 00 StringUtil.cpp和StringUtil.hh分析

1 /*2 * StringUtil.hh3 *4 * Copyright 2002, Log4cpp Project. All rights reserved.5 *6 * See the COPYING file for the terms of usage and distribution.7 */8 頭文件的說明,以及與版權相關的說明一般都會放置在文件的開始位置 9 #ifndef _LOG4CPP_STR…

【SQL】服務器環境下的SQL

一、大型數據庫的三層體系結構 web服務器:比如在淘寶頁面上,輸入“牛肉干”,就是web服務器來處理,提交給應用服務器。 應用服務器:在獲取到“牛肉干”這個請求后,應用服務器決定如何匯集結果,并…

【置頂】全局變量的好處與壞處

近日在做項目的過程中對plsql的使用非常多,主要是編寫存儲過程實現業務邏輯。但是在coding的過程中遇到非常奇怪的問題。 問題是:在package包頭中定義了一個變量,current_time : sysdate,然后在procedure使用這個定義的變量,直接i…

三個線程按順序輸出數字

當 n 3N 時&#xff0c;線程1輸出 當 n 3N 1 時&#xff0c;線程2輸出 當 n 3N 2 時&#xff0c;線程3輸出 最終的輸出為 0、1、2、3、4、5、6、7、8、10 #include <iostream> #include <thread> #include <mutex> #include <condition_variable&g…

TextView實現自動滾動滾動.

必須有要四個屬性: android:ellipsize"marquee"; android:focusable"true";android"focusableInTouchMode"true";android:singleLine"true"; <TextViewandroid:layout_width"fill_parent"android:layout_height&quo…

用最少數量的箭引爆氣球

在二維空間中有許多球形的氣球。對于每個氣球&#xff0c;提供的輸入是水平方向上&#xff0c;氣球直徑的開始和結束坐標。由于它是水平的&#xff0c;所以y坐標并不重要&#xff0c;因此只要知道開始和結束的x坐標就足夠了。開始坐標總是小于結束坐標。平面內最多存在104個氣球…

ExtJS中使用ztree 不顯示樹的解決辦法

最近部門同事碰到一個問題&#xff0c;將ztree嵌入在套了幾層Panel的面板中不會正常顯示&#xff0c;但是將上層面板換成window就能正常顯示&#xff0c;開始以為是所在的外部容器不管嵌套了幾層&#xff0c;但是必須最底層是window容器&#xff0c;但是測試后發現不是這樣的&a…

尋找小鎮的法官

在一個小鎮里&#xff0c;按從 1 到 N 標記了 N 個人。傳言稱&#xff0c;這些人中有一個是小鎮上的秘密法官。 如果小鎮的法官真的存在&#xff0c;那么&#xff1a; 小鎮的法官不相信任何人。 每個人&#xff08;除了小鎮法官外&#xff09;都信任小鎮的法官。 只有一個人同…

事務的隔離界別

事務的ACID特性&#xff1a; 1、Atomicity原子性 事務操作的不可分割性&#xff0c;要么全部執行&#xff0c;要么回滾。 2、Consistency一致性 數據庫在事務處理前后處于的一致性狀態。如銀行轉賬&#xff0c;兩個賬戶轉賬前的狀態和轉賬后的狀態必須一致。 3、Isolation隔離…

程序員福利各大平臺免費接口非常適用

電商接口 京東獲取單個商品價格接口: http://p.3.cn/prices/mgets?skuIdsJ_商品ID&type1 ps:商品ID這么獲取:http://item.jd.com/954086.html 物流接口 快遞接口: http://www.kuaidi100.com/query?type快遞公司代號&postid快遞單號 ps:快遞公司編碼:申通”shentong”…

WriteN, RTMP send error

WriteN, RTMP send error 32 (133 bytes) WriteN, RTMP send error 32 (49 bytes) WriteN, RTMP send error 9 (42 bytes)現象&#xff1a; 推流失敗&#xff0c;srs服務出錯。 原因 視頻流較慢&#xff0c;音頻流較快。 復現 視頻解碼得到幀數據&#xff0c;用異步接口處…

樣式公用代碼

/************** bug ************/.clearfix:after {content:""; display:block; height:0px; clear:both; overflow:hidden;}.clearfix {display:inline-block;}.clearfix {display:block;} /************** 公共用 ************/html {overflow:-moz-scrollbars-v…

即時聊天IM之二 openfire 整合現有系統用戶

合肥程序員群&#xff1a;49313181。 合肥實名程序員群&#xff1a;128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojitqq.com 綜述&#xff1a; 每天利用中午時間更新下這個知識點的的博客如果感興趣的覺得更新慢了也別介意&#xff08;其它時間還是…

cannot convert ‘_IO_FILE*’ to ‘const char*

錯誤代碼 #ifdef NDEBUG#define DBUG_PRINT(fmt, ...) #else#define DBUG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__) #endifBUG_PRINT(stderr, "decode %s does not support device type cuda.\n", dec->name);修改 BUG_PRINT("decode %s does not supp…

找出數組中前K大的值

將數組劃分為兩部分&#xff0c;前K項為前K大值的集合&#xff0c;無需有序。 while(true) {int flag nums[k];while(i < k && nums[i] > flag) {i;}while(j>k && nums[j] < flag) {j--;}if (i j || nums[i] nums[j]) {break;}int tmp nums[i]…