到目前爲止,我使用AsyncDisplayKit完成了很多工作,我真的很滿意它。不幸的是,現在我碰到了一個路障。如何爲ASDisplayNode強制執行最小高度?
我無法獲得一個ASButtonNode有一個最小高度(如果這是重要的ASCellNode)。
class SmallButtonCellNode: ASCellNode {
let normalSmallButton = ASButtonNode()
let selectedSmallButton = ASButtonNode()
init() {
super.init()
self.backgroundColor = UIColor.lightGrayColor()
// .. button title and background configuration here ..
let buttonSizeRange =
ASRelativeSizeRangeMake(
ASRelativeSizeMake(
ASRelativeDimensionMakeWithPercent(0),
ASRelativeDimensionMakeWithPoints(35.0)
),
ASRelativeSizeMake(
ASRelativeDimensionMakeWithPercent(1),
ASRelativeDimensionMakeWithPoints(35.0)
)
);
self.normalSmallButton.preferredFrameSize = CGSize(width: 111.0, height: 35.0)
self.normalSmallButton.flexGrow = true
self.normalSmallButton.sizeRange = buttonSizeRange
self.addSubnode(self.normalSmallButton)
self.selectedSmallButton.preferredFrameSize = CGSize(width: 111.0, height: 35.0)
self.selectedSmallButton.flexGrow = true
self.selectedSmallButton.sizeRange = buttonSizeRange
self.addSubnode(self.selectedSmallButton)
}
// MARK: - Layout
override func layoutSpecThatFits(constrainedSize: ASSizeRange) -> ASLayoutSpec {
let spec =
ASStackLayoutSpec(
direction: .Horizontal,
spacing: 20.0,
justifyContent: .SpaceAround,
alignItems: .Center,
children: [self.normalSmallButton, self.selectedSmallButton]
)
return
ASInsetLayoutSpec(
insets: UIEdgeInsets(top: 20.0, left: 20.0, bottom: 20.0, right: 20.0),
child: spec
)
}
}
結果是(雖然constrainedSize具有高度最大爲100.0):
的ASButtonNodes僅擬合文本高度。
我試着:
- 除去優選的幀大小(無效果)從
.Center
到.Stretch
- 改變(按鈕是作爲細胞一樣高 - 插圖)
- flexGrow =真在不同的地方
我知道我可以使用.Stretch
將單元格高度從100更改爲75,然後按鈕將自動結束b eing 35分高的,但是這不是我想要的(因爲這樣的佈局邏輯「的按鈕是35分高」實際上是集合視圖委託的部分..)
請幫助:)
裁判到'ASStaticLayoutSpec'是正確的指針。我不知道靜態佈局規範會這樣做,b/c文檔只會說「將佈局規格定位在固定位置的佈局規範」。 - 沒有任何關於體型的信息,唯一的孩子自動佔據了整個空間,沒有任何位置說明。 不過,這裏是我的解決方案:https://gist.github。com/floriankrueger/3d7932f253e1ec1d8bbc0e5b293a24dd THANK YOU – floriankrueger
btw'ASStaticLayoutSpec'現在是'ASAbsoluteLayoutSpec' - http://texturegroup.org/docs/layout2-conversion-guide.html – yash