在使用程式碼配置UIStackView遇到的子檢視被拉伸的問題, 直接使用storyBoard時子檢視不被拉伸
阿新 • • 發佈:2020-06-29
@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); }