Storyboard 引用 Xib

最近打算使用 Storyboard 開發(fā)項目,但某些場景會用到 Storyboard 中引用 Xib蝌借,根據(jù)網(wǎng)上教程搞了一翻嘱支,但由于環(huán)境各有差異,按網(wǎng)上教程沒弄出來厕九,后來發(fā)現(xiàn)可能是 IB 更新的原因蓖捶,新版 IB 中沒有 widthable 和 heightable 屬性,所以導(dǎo)致要復(fù)用 Xib 時扁远,AutoLayout 無效俊鱼。
自己寫了個基類來解決這個問題, OC 版的項目在 Github 上穿香,點擊前往
pod 'YYNib'
Swift 版本 點擊前往
pod 'YYNib-swift'
兩個工程中可以使用Pod引入亭引,注意: 如果需要支持 iOS7 的話,swift 版本不能使用 Pod 引入皮获。
OC主要代碼如下

#import "YYNibView.h"

@implementation YYNibView

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self initSubviews];
        
        if (CGRectIsEmpty(frame)) {
            self.frame = _contentView.bounds;
        } else {
            _contentView.frame = self.bounds;
        }
    }
    return self;
}

- (instancetype)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super initWithCoder:aDecoder]) {
        [self initSubviews];
        _contentView.frame = self.bounds;
    }
    return self;
}

- (void)setFrame:(CGRect)frame {
    [super setFrame:frame];
    _contentView.frame = self.bounds;
}

- (void)setBackgroundColor:(UIColor *)backgroundColor {
    [super setBackgroundColor:backgroundColor];
    _contentView.backgroundColor = backgroundColor;
}

- (void)initSubviews {
    NSString *className = NSStringFromClass([self class]);
    _contentView = [[NSBundle mainBundle] loadNibNamed:className owner:self options:nil].firstObject;
    _contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    [self addSubview:_contentView];
    // Fix backgroundColor
    self.backgroundColor = _contentView.backgroundColor;
}

@end

Swift 主要代碼如下

import UIKit

class YYNibView: UIView {
    
    var contentView:UIView!;
    
    override init(frame: CGRect) {
        super.init(frame: frame);
        
        self.initWithSubviews();
        if (CGRectIsEmpty(frame)) {
            self.frame = (contentView?.bounds)!;
        } else {
            contentView?.frame = self.bounds;
        }
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder);
        self.initWithSubviews();
        self.contentView?.frame = self.bounds;
    }
    
    override var frame: CGRect {
        didSet {
            self.contentView?.frame = self.bounds;
        }
    }
    
    override var backgroundColor: UIColor? {
        didSet {
            self.contentView?.backgroundColor = self.backgroundColor;
        }
    }
    
    func initWithSubviews() {
        let className = "\(self.classForCoder)"
        self.contentView = NSBundle.mainBundle().loadNibNamed(className, owner: self, options: nil).first as? UIView;
        self.contentView?.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight];
        self.addSubview(self.contentView!);
        // Fix backgroundColor
        self.backgroundColor = self.contentView?.backgroundColor;
    }
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末焙蚓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子洒宝,更是在濱河造成了極大的恐慌购公,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雁歌,死亡現(xiàn)場離奇詭異宏浩,居然都是意外死亡,警方通過查閱死者的電腦和手機靠瞎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門比庄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乏盐,你說我怎么就攤上這事佳窑。” “怎么了父能?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵神凑,是天一觀的道長。 經(jīng)常有香客問我何吝,道長溉委,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任爱榕,我火速辦了婚禮瓣喊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘黔酥。我一直安慰自己型宝,他們只是感情好八匠,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著趴酣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坑夯。 梳的紋絲不亂的頭發(fā)上岖寞,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音柜蜈,去河邊找鬼仗谆。 笑死,一個胖子當(dāng)著我的面吹牛淑履,可吹牛的內(nèi)容都是我干的隶垮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼秘噪,長吁一口氣:“原來是場噩夢啊……” “哼狸吞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起指煎,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蹋偏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后至壤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體威始,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年像街,在試婚紗的時候發(fā)現(xiàn)自己被綠了黎棠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡镰绎,死狀恐怖脓斩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跟狱,我是刑警寧澤俭厚,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站驶臊,受9級特大地震影響挪挤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜关翎,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一扛门、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纵寝,春花似錦论寨、人聲如沸星立。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绰垂。三九已至,卻和暖如春火焰,著一層夾襖步出監(jiān)牢的瞬間劲装,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工昌简, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留占业,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓纯赎,卻偏偏與公主長得像谦疾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子犬金,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 得知有《降臨》這部電影上映是在OMT冥想導(dǎo)師群里有位同修提到為了看懂這部電影專門掛在409層阿卡西幸虧學(xué)習(xí)了冥想課...
    承謙閱讀 319評論 0 0
  • 我曾多次說過念恍,教師的最大師德是無私和按教育規(guī)律辦事,即“愛與會愛佑附》担”如果用一個詞來概括,那就是良心音同。 ...
    經(jīng)史合參閱讀 464評論 0 2
  • 好失落词爬,為什么總是找那個萎了的家伙聊天呢,從這星期開始我再也不和他聊天了
    如一不如一閱讀 126評論 0 0
  • 呆在家里真的很無聊权均,下午抽空畫著貓顿膨。雖然畫了很久,但是一直沒能靜下心叽赊,所以細節(jié)處還是比較粗糙恋沃。繼續(xù)努力加油
    半斤v5閱讀 170評論 0 0
  • 我們是同學(xué),但是經(jīng)過這樣的光陰以后必指,我不知道我們畢業(yè)以后會不會互刪退圈囊咏。 1.人都是有自尊底線的 她一進寢室給我的...
    愛金桔的魚閱讀 1,655評論 0 0