iOS SDK詳解之IBInspectable和IB_DESIGNABLE-Storyboad動態重新整理

來源:互聯網
上載者:User

標籤:ios   inspectabl   designable   動態重新整理   ib   

原創Blog,轉載請註明出處
blog.csdn.net/hello_hwc
歡迎關注我的iOS-SDK詳解專欄,在這裡你能找到很多iOS開發基礎的文章
http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html

前言:
在做應用的UI設計的時候,如果屬效能夠在Interface Builder的圖形化介面進行設定,並且動態預覽到效果,那樣無疑會大大提高應用的開發效率。而XCode為我們提供了這樣的一種方式,就是使用IBInspectable和IB_DESIGNABLE

User Defined Rumtime Attributes

通過User Defined Rumtime Attributes可以在Interface Builder中,設定一些KVC屬性的值。例如
設定圓角為50

這樣,在運行模擬器,會有如下效果

不過,這樣做有明顯的弊端

不容易調試和後期維護

IB_DESIGNABLE

IB_DESIGNABLE的宏的功能就是讓XCode動態渲染出該類圖形化介面。
使用方式,把該宏加在自訂類的前面

#import <UIKit/UIKit.h>IB_DESIGNABLE@interface IBDesigbableImageview : UIImageView@end

然後,再設定imageview為繼承類,並且設定圓角

可以看到,storyboard上的imageview動態重新整理了

IBInspectable

讓支援KVC的屬效能夠在Attribute Inspector中配置。
不熟悉KVC的童鞋可以看看我這篇文章
ios SDK詳解之KVC

添加屬性以及Set方法即可,如果是現有類,使用Category

例如為imageView的繼承類設定cornerRadius
標頭檔添加屬性

@property (nonatomic) IBInspectable CGFloat cornerRadius;

.m檔案實現對應set的方法

-(void)setCornerRadius:(CGFloat)cornerRadius{    _cornerRadius = cornerRadius;    self.layer.cornerRadius = cornerRadius;    self.layer.masksToBounds = cornerRadius > 0?true:false;}

這樣,在Attribute Inspector就會多出一個配置選項

通過設定這個選項,就可以設定layer的圓角了。
每次設定圓角,都會在Identity Inspector中改變一個rumtime的KVC變數

不過,現在仍然不能動態重新整理

通過IB_DESIGNABLE配合IBInspectable可以實現動態重新整理

實現方式很簡單,就是在自訂類的標頭檔處加上這個宏定義即可。然後把對應的類設定為自訂的類。

.h檔案

#import <UIKit/UIKit.h>IB_DESIGNABLE@interface IBDesigbableImageview : UIImageView@property (nonatomic) IBInspectable CGFloat cornerRadius;@end

.m檔案

#import "IBDesigbableImageview.h"@implementation IBDesigbableImageview-(void)setCornerRadius:(CGFloat)cornerRadius{    _cornerRadius = cornerRadius;    self.layer.cornerRadius = cornerRadius;    self.layer.masksToBounds = cornerRadius > 0?true:false;}@end

效果就是最開始的Demo

如果不能動態重新整理,重啟XCode,如果還不能重新整理,如RefreshingAllViews,建議開啟Automatically Refresh Views

官網關於這部分的連結
https://developer.apple.com/library/ios/recipes/xcode_help-IB_objects_media/Chapters/CreatingaLiveViewofaCustomObject.html
我的Github這個項目的連結,歡迎關注這個項目
https://github.com/wenchenhuang/IBInspectableAndIBDesignableDemo

CSDN上傳的資源暫時沒有更新,要原始碼的童鞋直接去GitHub下載

iOS SDK詳解之IBInspectable和IB_DESIGNABLE-Storyboad動態重新整理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.