1. 程式人生 > >iOS_利用IBInspectable與IB_DESIGNABLE實現自定義類在Storyboad並動態展示設定效果

iOS_利用IBInspectable與IB_DESIGNABLE實現自定義類在Storyboad並動態展示設定效果

今天無意get到一個新的開發技能(蘋果自帶的SDK有提供),可以讓自定義的View在Storyboad或者Xib看到自己在自定義View.h新增的自定義屬性,並且對屬性進行引數賦值後動態重新整理檢視效果。

先囉嗦一下,自己在get這個技能之前經常需要將自定義View在Xib上進行關聯,But,關聯之後麻煩來了,上面的自定義引數無法直接設定,需要到.m檔案手動設定,然後再common+R一下才能看效果,開發效率低了不少。該技能只需進行簡單的設定就可以直觀的看到設定好的引數所展現出來的效果如何,大大提高了開發效率。

備註:我自己新建了一個TestView

首先,在TestView.h的類名前新增IB_DESIGNABLE;

然後,在新增的屬性testColor屬性型別前面新增IBInspectable宣告;

最後,在TestView.m重寫set方法即可。

上圖上圖:

TestView.h

TestView.m


xib關聯檔案

引數賦值

到此也就完成了。驚喜不驚喜?意外不意外?

如果不能動態重新整理,重啟一下XCode或者開啟Automatically Refresh Views:


後話:細心的童鞋可能會注意到,對自定義引數設定了value之後,KeyPath那邊也會同時展示。親測,在自定義屬性還原預設值後KeyPath對應的自增屬性也會被移除。

注意:對類添加了IB_DESIGNABLE後,又移除了,只要XCode不關閉,即使清除了XCode快取依然能動態重新整理,除非關閉XCode。

相關推薦

iOS_利用IBInspectableIB_DESIGNABLE實現定義Storyboad動態展示設定效果

今天無意get到一個新的開發技能(蘋果自帶的SDK有提供),可以讓自定義的View在Storyboad或者Xib看到自己在自定義View.h新增的自定義屬性,並且對屬性進行引數賦值後動態重新整理檢視效果。 先囉嗦一下,自己在get這個技能之前經常需要將自定義View在Xib

利用jquery.print.js實現定義網頁列印

最近做專案。客戶好些地方需要列印網頁上的表格,研究了好些方法都不太理想。最後找到一個jquery.print.js列印外掛,非常方便就可以實現想要的網頁列印效果,值得推薦。 實現方法 引用jquery和,jqprint到您的頁面 <script la

使用fastjsonSpringMVC實現定義HttpMessageConverter接收和獲取JSON格式的資料

1.下載Spring、fastjson的jar包以及jQuery和json2的js檔案,向專案的WEB-INF/lib目錄加入Spring和fastjson的jar包,在WebContent目錄下建立一個js資料夾,向js資料夾中加入jQuery和json2的js檔案。 2

Android 併發二三事之利用CountDownLatch 或 ConditionVariable實現定義Future

前言: Android 併發第三篇 介紹如何利用 CountDownLatch 或 ConditionVariable 實現自定義Future,用於適應專案中的需求。 即阻塞當前執行緒,等待其他執行緒的結果返回,其功能類似於FutureTask。 首先介

Java原始碼分析——Class、ClassLoader解析(三) 載入器、實現定義載入器

    在這個系列的第一篇章就講解了Class類的獲取以及載入過程,但是並沒有提及具體的載入過程,在java中,載入一個類是通過ClassLoader類來執行的,也就是類載入器完成。java中所有的類,都必須載入進jvm中才能執行,這個載入的意思是

Thinkphp5.0.18最高效的實現定義的自動載入方式

今天看了下,tp5的原始碼。發現自定義類庫的載入方式 是有順序的。分別是按對映方式 psr4 psr0,其中最高效的,順序最前的當然是對映方式。 我貼出原始碼,大家看下。 private static function findFile($class) { //echo

Android定位&地圖&導航——基於百度地圖,實現定義圖示繪製點選時彈出泡泡

public class MainActivity extends Activity { private EditText txtAddr; // 定位相關 LocationClient mLocClient; LocationData locData = nul

thinkPHP3.2.3實現定義的自動載入

實現類的自動載入有兩種方式: 1.新建一個配置檔案為 也可以自己命名,如果自己命名的話要在config.php中加入配置檔案載入的語句: 'LOAD_EXT_CONFIG' => 'xxx', 然後在裡面設定具體的對映: return array( 'C

為LINQ實現定義的Distinct方法

如果在LINQ裡要使用自定義類的Distinct方法,如果預設的不管用,(大部分情況不管用),那麼就要自己實現。 根據MSDN建議 1)實現IEquatable<T>介面中的public bool Equals(T other),這個很簡單 但是這個很操蛋,根本

17、定義屬性訪問及動態屬性設定

前言:本文主要介紹python類的一些自定義屬性訪問的方法,以及類的動態屬性設定即python的內建函式setattr()。 自定義屬性訪問 什麼是屬性?下面的例子a和b是屬性嗎?不是,他們是全域性變數,屬性(attribute)是類中的成員變數,也可以理解為屬性就是類變數。 a = 11234 b =

匿名Select方法實現定義對象插入局部表結構中

aso 直接 菜單 ember new order ber 構建 als 在提取局部表結構數據時,通過Select選取需要的字段,如下句,此時其實產生了一個不用於_menuMan的原新數據類型new { c.SYS_COMMANDS_ID,c.TXT_COMMANDTITL

利用echarts highcharts 實現定義地圖 關系圖效果 側邊3D柱形圖餅圖散點圖

技術 ges 散點圖 chart blog 餅圖 git 分享 charts github 地址: https://https://github.com/Gengshaoxuan/medataMap github 地址: https://https://github.c

Django restframwork實現定義數據格式的分頁搜索

模糊 ces none ota ntp model 簡單的 api ner 最近因為在做分頁時遇到的問題很多,頁浪費了好多時間,所以記錄一下。以後如遇到可用省去不必要的麻煩 restframwork中的官方文檔對分頁和搜索頁進行了詳細的介紹,但是我公司需要的return的

利用原生js實現定義滾動條(可點選到達,拖動到達)

1.HTML檔案 div1是滾動條,div2是滾動小球,div3是文字區域容器,div4是文字區域。 <div id="div"> <div id="div1"> <div id="div2"> </div> </div&

利用Javascript的 函式過載 實現定義Alert樣式

{    document.write ('<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">');    document.write ('  <tr

C# 實現定義的USB設備上位機進行通信(上位機部分)

lob filename 參考 EDA 文件 inpu sha red file   因為以前沒用過USB,對USB也不了解,於是上網查了很多資料,不過網上的資料都是零零散散,不清不楚的,於是我自己總結了一下,下面幾個鏈接是網上這麽多零散資料裏,我覺得比較有參考意義的。  

利用Proxy代理和Reflect物件實現定義原型鏈

1. 將代理作為原型鏈    用Object.create( )方法建立原型鏈,同時設定自定義的defineProperty上述例子中,在物件上定義屬性的操作不需要操作物件原型,所以代理中的defineProperty陷阱永遠不會被呼叫。自定義get和set方法後,得到下面修

CSS 實現定義樣式的單選框多選框

前端在開發的過程中,經常會遇見使用單選框以及多選框的情況,但是預設的選框按鈕的樣式單一,一般我們需要去自定義一些選框按鈕的樣式; 通常情況下,單選、多選為方便自定義樣式,一般會採用input+

C++資料結構STL--雙向迴圈連結串列(實現定義iterator

class dLinkList {private:node<T> *head;  //頭節點size_t length; //連結串列長度void dInsert(node<T> *curr,T val)  //插入的輔助函式,把新節點插入curr前 {node<T>* t

JAVA 利用Comparator實現定義排序

/* 有個Person類,包括姓、名、性別、年齡屬性:現在有個需求,需要對Person進行以下規則的排序  * 誰的姓拼音靠前,誰就排前面。  * 然後對名字進行排序。如果同名,女性排前頭。  * 如果名字和性別都相同,年齡小的排前頭。  * int compare(O