ios - Auto layout issue with dynamically loaded XIB -
i have issue auto layout , particular ui flow trying build.
essentially, have following:
- a storyboard
- a
xib
calledupdateyou.xib
- a
xib
calledupdatefilter.xib
within storyboard
scene uiviewcontroller
called updateviewcontroller
in turn has uisegmentedcontrol
2 options , scrollview.
the general premise when uisegmentedcontrol
in option1 loads updateyou.xib
in scrollview. constrained width of parent view , expanded vertically required.
however, when option2 of uisegmentedcontrol
selected updatefilter xib
loaded not constrained width of parent view.
below print out of constraints (the first *** separated log correctly laid out view):
2015-06-20 08:39:27.514 [42981:1543261] ************************************************* constraint: <nslayoutconstraint:0x7fc691d7eeb0 uiview:0x7fc691d7d720.leading == uiview:0x7fc691d7d5f0.leadingmargin - 16> constraint: <nslayoutconstraint:0x7fc691d7ef00 uiview:0x7fc691d7d720.top == uiview:0x7fc691d7d5f0.topmargin> constraint: <nslayoutconstraint:0x7fc691d7ef50 uiview:0x7fc691d7d5f0.trailingmargin == uiview:0x7fc691d7d720.trailing - 16> constraint: <nslayoutconstraint:0x7fc691d7efa0 uiview:0x7fc691d7d5f0.trailingmargin == uiview:0x7fc691d7d900.trailing - 16> constraint: <nslayoutconstraint:0x7fc691d7eff0 v:[_uilayoutguide:0x7fc691d7e4a0]-(0)-[uiview:0x7fc691d7d900]> constraint: <nslayoutconstraint:0x7fc691d7f040 uiview:0x7fc691d7d900.leading == uiview:0x7fc691d7d5f0.leadingmargin - 16> constraint: <nslayoutconstraint:0x7fc691d7f090 uisegmentedcontrol:0x7fc691d018b0.trailing == uiview:0x7fc691d7d5f0.trailingmargin> constraint: <nslayoutconstraint:0x7fc691d7f0e0 v:[uiview:0x7fc691d7d900]-(8)-[uisegmentedcontrol:0x7fc691d018b0]> constraint: <nslayoutconstraint:0x7fc691d7f130 uisegmentedcontrol:0x7fc691d018b0.leading == uiview:0x7fc691d7d5f0.leadingmargin> constraint: <nslayoutconstraint:0x7fc691d7f180 uiview:0x7fc691d7d5f0.trailingmargin == uiscrollview:0x7fc691d7bbd0.trailing - 16> constraint: <nslayoutconstraint:0x7fc691d7f1d0 uiscrollview:0x7fc691d7bbd0.leading == uiview:0x7fc691d7d5f0.leadingmargin - 16> constraint: <nslayoutconstraint:0x7fc691d7f220 v:[uisegmentedcontrol:0x7fc691d018b0]-(8)-[uiscrollview:0x7fc691d7bbd0]> constraint: <nslayoutconstraint:0x7fc691d7f270 v:[uiscrollview:0x7fc691d7bbd0]-(0)-[_uilayoutguide:0x7fc691d7e9f0]> constraint: <_uilayoutsupportconstraint:0x7fc691d51190 v:[_uilayoutguide:0x7fc691d7e4a0(0)]> constraint: <_uilayoutsupportconstraint:0x7fc691d55c60 v:|-(0)-[_uilayoutguide:0x7fc691d7e4a0] (names: '|':uiview:0x7fc691d7d5f0 )> constraint: <_uilayoutsupportconstraint:0x7fc691d4f9a0 v:[_uilayoutguide:0x7fc691d7e9f0(0)]> constraint: <_uilayoutsupportconstraint:0x7fc691d66220 _uilayoutguide:0x7fc691d7e9f0.bottom == uiview:0x7fc691d7d5f0.bottom> ************************************************* ************************************************* constraint: <nslayoutconstraint:0x7fc691d7eeb0 uiview:0x7fc691d7d720.leading == uiview:0x7fc691d7d5f0.leadingmargin - 16> constraint: <nslayoutconstraint:0x7fc691d7ef00 uiview:0x7fc691d7d720.top == uiview:0x7fc691d7d5f0.topmargin> constraint: <nslayoutconstraint:0x7fc691d7ef50 uiview:0x7fc691d7d5f0.trailingmargin == uiview:0x7fc691d7d720.trailing - 16> constraint: <nslayoutconstraint:0x7fc691d7efa0 uiview:0x7fc691d7d5f0.trailingmargin == uiview:0x7fc691d7d900.trailing - 16> constraint: <nslayoutconstraint:0x7fc691d7eff0 v:[_uilayoutguide:0x7fc691d7e4a0]-(0)-[uiview:0x7fc691d7d900]> constraint: <nslayoutconstraint:0x7fc691d7f040 uiview:0x7fc691d7d900.leading == uiview:0x7fc691d7d5f0.leadingmargin - 16> constraint: <nslayoutconstraint:0x7fc691d7f090 uisegmentedcontrol:0x7fc691d018b0.trailing == uiview:0x7fc691d7d5f0.trailingmargin> constraint: <nslayoutconstraint:0x7fc691d7f0e0 v:[uiview:0x7fc691d7d900]-(8)-[uisegmentedcontrol:0x7fc691d018b0]> constraint: <nslayoutconstraint:0x7fc691d7f130 uisegmentedcontrol:0x7fc691d018b0.leading == uiview:0x7fc691d7d5f0.leadingmargin> constraint: <nslayoutconstraint:0x7fc691d7f180 uiview:0x7fc691d7d5f0.trailingmargin == uiscrollview:0x7fc691d7bbd0.trailing - 16> constraint: <nslayoutconstraint:0x7fc691d7f1d0 uiscrollview:0x7fc691d7bbd0.leading == uiview:0x7fc691d7d5f0.leadingmargin - 16> constraint: <nslayoutconstraint:0x7fc691d7f220 v:[uisegmentedcontrol:0x7fc691d018b0]-(8)-[uiscrollview:0x7fc691d7bbd0]> constraint: <nslayoutconstraint:0x7fc691d7f270 v:[uiscrollview:0x7fc691d7bbd0]-(0)-[_uilayoutguide:0x7fc691d7e9f0]> constraint: <_uilayoutsupportconstraint:0x7fc691d51190 v:[_uilayoutguide:0x7fc691d7e4a0(20)]> constraint: <_uilayoutsupportconstraint:0x7fc691d55c60 v:|-(0)-[_uilayoutguide:0x7fc691d7e4a0] (names: '|':uiview:0x7fc691d7d5f0 )> constraint: <_uilayoutsupportconstraint:0x7fc691d4f9a0 v:[_uilayoutguide:0x7fc691d7e9f0(0)]> constraint: <_uilayoutsupportconstraint:0x7fc691d66220 _uilayoutguide:0x7fc691d7e9f0.bottom == uiview:0x7fc691d7d5f0.bottom> constraint: <nslayoutconstraint:0x7fc69402d9e0 'uiview-encapsulated-layout-width' h:[uiview:0x7fc691d7d5f0(375)]> constraint: <nslayoutconstraint:0x7fc69402ed70 'uiview-encapsulated-layout-height' v:[uiview:0x7fc691d7d5f0(667)]> constraint: <nsautoresizingmasklayoutconstraint:0x7fc69402db80 h=-&- v=-&- 'uiview-encapsulated-layout-left' h:|-(0)-[uiview:0x7fc691d7d5f0] (names: '|':uiview:0x7fc691c40020 )> constraint: <nsautoresizingmasklayoutconstraint:0x7fc69402d4e0 h=-&- v=-&- 'uiview-encapsulated-layout-top' v:|-(0)-[uiview:0x7fc691d7d5f0] (names: '|':uiview:0x7fc691c40020 )> *************************************************
i can see issue additional constraints included in second view know not why there or how have got there. have checked constraints in ib , not included.
i have tried set translatesautoresizingmaskintoconstraints
no
on offending view makes layout worse!
the xibs added through following code:
- (ibaction)onsegmentedcontrolvaluechanged:(id)sender { switch (self.segmentedcontrol.selectedsegmentindex) { case 0: if (!updateprofileyou) { updateprofileyou = [[[nsbundle mainbundle] loadnibnamed:@"updateprofileyou" owner:self options:nil] lastobject]; } [self.scrollview.subviews[0] removefromsuperview]; [self.scrollview addsubview:updateprofileyou]; [self.scrollview setcontentsize:cgsizemake(320, updateprofileyou.frame.size.height)]; break; case 1: if (!updateprofilefilters) { updateprofilefilters = [[[nsbundle mainbundle] loadnibnamed:@"updateprofilefilters" owner:self options:nil] lastobject]; } [self.scrollview.subviews[0] removefromsuperview]; [self.scrollview addsubview:updateprofilefilters]; [self.scrollview setcontentsize:cgsizemake(320, updateprofilefilters.frame.size.height)]; break; default: break; } }
thanks
Comments
Post a Comment