ios - UINavigationBar.appearance().translucent is creating a big white space -


update 2: i'm still hoping problem i'm going refine question little i've narrowed down better.

my uiviewcontroller hierarchy looks this:

enter image description here

the filter view appears if user touches filter icon , selects lift type. image on left looks without filter selected , right image looks filter selected. navigation area (outlined in green) i'm trying style.

enter image description here

here's thing can't figure out. if add these 2 things:

uinavigationbar.appearance().translucent = false uinavigationbar.appearance().bartintcolor = uicolor(hexstring: "232b35") 

then white space appears between navigation area , filter view:

enter image description here

if set translucent property true, white space doesn't appear, bartintcolor has no effect.

note didn't put uinavigationbar in uiviewcontroller. have uinavigationitem i'm adding code.

at point, question - why big white space appearing out of when have uinavigationbar.appearance().translucent = false in code (and can rid of it, still change color of navigation area)?

i'm stuck , appreciate help. thanks!

the following original question information may or may not helpful: i'm trying style app , having difficult time so. on 1 uiviewcontroller i've got thememanager struct function applies theme app , in method code makes navigation bar blend in background color of app:

static func applytheme(theme: theme) {      // set background color     sharedapplication.delegate?.window??.backgroundcolor = uicolor(hexstring: "232b35")      uinavigationbar.appearance().translucent = false // these offenders     uinavigationbar.appearance().bartintcolor = uicolor(hexstring: "232b35")       // first, set backgroundimage nothing     uinavigationbar.appearance().setbackgroundimage(       uiimage(),       forbarposition: .any,       barmetrics: .default)      // , set shadowimage nothing     uinavigationbar.appearance().shadowimage = uiimage()      uistatusbarstyle.lightcontent     uilabel.appearance().textcolor = uicolor(hexstring: "768daa")     }   } 

my initial viewcontroller looks want - background , navigation components same color:

enter image description here

but on different view controller, it's got big space don't want:

enter image description here

and i've figured out it's uinavigationbar.appearance().translucent , uinavigationbar.appearance().bartintcolor properties causing happen. it's if it's adding uinavigationbar underneath actual navigation area. if comment code out, doesn't have color of course, big space don't want goes away too:

enter image description here

the big difference between 2 vcs this: in first vc looks want, intentionally placed uinavigationbar via storyboard in second vc have not. placed uinavigationitem in one. note, second vc contains uitableview isn't uitableviewcontroller.

how can solid color want in navigation area without adding unwanted space underneath it?

edit #1 here's @ uiviewcontroller problem:

enter image description here

notice hierarchy uiview @iboutlet connection, below uistackview contains filter view (a uiview) expands , collapses height layout constraint, , uitableview. big white space appears isn't in hierarchy.

in case helps, here's viewdidload method in lift log's uiviewcontroller:

class liftlogviewcontroller: uiviewcontroller, uitableviewdatasource, uitableviewdelegate, nsfetchedresultscontrollerdelegate {

//mark: ib outlets    @iboutlet var tableview: uitableview!   @iboutlet weak var navitem: uinavigationitem!   @iboutlet weak var filterviewheightconstraint: nslayoutconstraint!   @iboutlet weak var clearfilterbutton: uiimageview!   @iboutlet weak var selectedfilter: uilabel!   @iboutlet weak var clearbuttonheightconstraint: nslayoutconstraint!   @iboutlet weak var clearbuttonview: uiimageview!    let coredatastack = coredatastack()   var liftevents = [liftevent]()   var isfilterviewopen = false    override func viewdidload() {      let donebutton = uibarbuttonitem(title: "done", style: .plain, target: self, action: #selector(self.dismisslog(_:)))      let filterimage = uiimage(named: "filter_icon")     let filterbutton = uibarbuttonitem(image: filterimage, style: .plain, target: self, action: #selector(self.actionfilter))      self.navitem.rightbarbuttonitems = [donebutton, filterbutton]      let buttontap = uitapgesturerecognizer(target: self, action: #selector(self.clearfilter))     clearfilterbutton.addgesturerecognizer(buttontap)      filterviewheightconstraint.constant = 0.0     clearbuttonheightconstraint.constant = 0.0      super.viewdidload()   } 

did set uinavigationbar in first vc translucent properties false via storyboard keep consistent uinavigationbar.appearance()?

enter image description here

then second vc top bar should inferring first vc.

enter image description here


Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -