2016-12-30 3 views
1

Ich versuche, das folgende Design mit Facebook AsyncDisplayKit zu bauen, und ich habe Probleme beim Erstellen der Zellen und der TableHeaderView.Einfache Zelle mit AsyncDisplayKit Layout

Entwurf:

Zellen:

So jede Zelle ein ASImageNode und ein ASEditableTextNode mit folgendem Layout:

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec { 
    var cellChildren = [ASLayoutElement]() 

    let iconTextfieldStack = ASStackLayoutSpec.horizontal() 
    iconTextfieldStack.alignItems = .center 
    iconTextfieldStack.justifyContent = .start 
    iconTextfieldStack.style.flexShrink = 1.0 
    iconTextfieldStack.style.flexGrow = 1.0 

    _iconImageView.style.preferredSize = CGSize(width: 30, height: 30) 
    cellChildren.append(ASInsetLayoutSpec(insets: UIEdgeInsetsMake(10, 10, 10, 10), child: _iconImageView)) 

    _textField.style.spacingBefore = 10 
    cellChildren.append(ASInsetLayoutSpec(insets: UIEdgeInsetsMake(0, 0, 0, 10), child: _textField)) 

    iconTextfieldStack.children = cellChildren 


    return ASInsetLayoutSpec(insets: UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0), child: iconTextfieldStack) 
} 

Das Ergebnis sieht aus wie das:

Wie Sie die dritten Reihen sehen ASEditableTextNode überschreitet die Zellen Breite (erstes Problem). Die andere Sache ist, dass die ASEditableTextNode ihre Höhe (und die Zellenhöhe) nicht erweitert, um die Zeilen des ASEditableTextNode Textes anzuzeigen. Auch bekomme ich diese Warnung:

-[UIWindow endDisablingInterfaceAutorotationAnimated:] called on <UIRemoteKeyboardWindow: 0x1024c9c00; frame = (0 0; 375 667); opaque = NO; autoresize = W+H; layer = <UIWindowLayer: 0x17022e4c0>> without matching -beginDisablingInterfaceAutorotation. Ignoring. 

Gibt es eine Möglichkeit, dies zu erreichen?

Antwort

1

Thanx an der lockeren Gruppe I durch eine Änderung der Funktion, um das Problem gelöst haben:

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec { 
    var cellChildren = [ASLayoutElement]() 

    let iconTextfieldStack = ASStackLayoutSpec.horizontal() 
    iconTextfieldStack.alignItems = .center 
    iconTextfieldStack.justifyContent = .start 
    iconTextfieldStack.style.flexShrink = 1.0 
    iconTextfieldStack.style.flexGrow = 1.0 

    _iconImageView.style.preferredSize = CGSize(width: 30, height: 30) 
    _iconImageView.style.alignSelf = .start 
    cellChildren.append(ASInsetLayoutSpec(insets: UIEdgeInsetsMake(10, 10, 10, 10), child: _iconImageView)) 

    _textField.style.spacingBefore = 10 

    let textInset = ASInsetLayoutSpec(insets: UIEdgeInsetsMake(10, 0, 10, 10), child: _textField) 
    textInset.style.flexShrink = 1.0 

    cellChildren.append(textInset) 

    iconTextfieldStack.children = cellChildren 


    return iconTextfieldStack 
} 

der Hauptschlüssel war flexShrink zu ASInsetLayoutSpec des Textfeld hinzuzufügen

Verwandte Themen