ios - Autolayout - Vertically center two views in a UITableViewCell when one view has dynamic height -
ios - Autolayout - Vertically center two views in a UITableViewCell when one view has dynamic height -
this i'm trying achieve. within of uitableview cell, have uilabel populated dynamic content , separate uiview has set height. in cases when there lot of text, uilabel determines height of uitableview cell. in other cases when there 1 line of text populating uilabel, uiview sets height of cell. (this have.)
self.mylabel.settranslatesautoresizingmaskintoconstraints(false) self.myview.settranslatesautoresizingmaskintoconstraints(false) allow viewsdictionary = [ "mylabel":mylabel, "myview":myview, ] allow mylabel_h:array = nslayoutconstraint.constraintswithvisualformat("h:|-15-[mylabel]-60-|", options: nslayoutformatoptions(0), metrics: nil, views: viewsdictionary) allow mylabel_v:array = nslayoutconstraint.constraintswithvisualformat("v:|-[mylabel]-|", options:nslayoutformatoptions(0), metrics: nil, views: viewsdictionary) self.contentview.addconstraints(mylabel_h) self.contentview.addconstraints(mylabel_v) allow myview_h:array = nslayoutconstraint.constraintswithvisualformat("h:[myview(50)]-|", options: nslayoutformatoptions(0), metrics: nil, views: viewsdictionary) allow myview_v:array = nslayoutconstraint.constraintswithvisualformat("v:|-(>=10)-[myview(100)]-(>=10)-|", options: nslayoutformatoptions(0), metrics: nil, views: viewsdictionary) self.contentview.addconstraints(myview_h) self.contentview.addconstraints(myview_v)
instead this: (and i'm throwing errors: =10)-| (names: '|':uitableviewcellcontentview:0x7fc21bc6d050 )>)
you can align 2 subviews using alignment values in options parameter of visual layout method (.alignallcentery
), don't need add together separate constraint image view center in y direction. also, improve create horizontal constraints go left border label image view right edge, instead of pinning label both edges of superview.
class rdtableviewcell: uitableviewcell { var mylabel = uilabel() var myview = uiimageview() required init(coder adecoder: nscoder) { super.init(coder: adecoder) } override init(style: uitableviewcellstyle, reuseidentifier: string?) { super.init(style: style, reuseidentifier: reuseidentifier) mylabel.numberoflines = 0 mylabel.settranslatesautoresizingmaskintoconstraints(false) myview.settranslatesautoresizingmaskintoconstraints(false) contentview.addsubview(mylabel) contentview.addsubview(myview) allow viewsdictionary = ["mylabel":mylabel, "myview":myview] allow horizontalcons = nslayoutconstraint.constraintswithvisualformat("h:|-15-[mylabel]-[myview(50)]-|", options: .alignallcentery, metrics: nil, views: viewsdictionary) allow mylabel_v = nslayoutconstraint.constraintswithvisualformat("v:|-[mylabel]-|", options:nslayoutformatoptions(0), metrics: nil, views: viewsdictionary) allow myview_v = nslayoutconstraint.constraintswithvisualformat("v:|-(>=10)-[myview(100)]-(>=10)-|", options: nslayoutformatoptions(0), metrics: nil, views: viewsdictionary) contentview.addconstraints(horizontalcons) contentview.addconstraints(mylabel_v) contentview.addconstraints(myview_v) } }
ios uitableview swift autolayout visual-format-language
Comments
Post a Comment