在使用代碼配置UIStackView遇到的子視圖被拉伸的問題, 直接使用storyBoard時子視圖不被拉伸


   @property (nonatomic, strong) NSMutableArray<HomeActionButton *> *actions;


self.stackView = [[UIStackView alloc] initWithArrangedSubviews:self.actions]; self.stackView.frame = self.bounds; self.stackView.spacing = UIStackViewSpacingUseDefault; self.stackView.alignment = UIStackViewAlignmentTop; self.stackView.axis = UILayoutConstraintAxisHorizontal; self.stackView.distribution = UIStackViewDistributionEqualSpacing; [self addSubview:self.stackView];

 

設置了stackView的space等分, 但是在頁面上出現HomeActionButton被拉伸的情況, 找了半天沒找到問題所在,

無奈之下 去看了官方的文檔, 

找到了問題所在:

上面有一個關鍵的信息: intrinsicContentSize 需要我們提供子視圖的Size信息, 否則他就會根據stackView自己的規則來拉伸子視圖

然后在HomeActionButton類中重寫intrinsicContentSize 這個方法 就好了

/// the stack view uses each arranged view’s intrinsicContentSize property when calculating its size along the stack’s axis.
- (CGSize)intrinsicContentSize {
    return CGSizeMake(k_home_action_button_w, k_home_action_button_h);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM