swift - How to move or resize an NSView by setting the frame property? -
i created nsview in storyboard. in case, nstextfield. in nsviewcontroller's viewdidload() method, want conditionally resize , reposition nstextfield, setting frame has no effect.
for example:
class viewcontroller: nsviewcontroller { @iboutlet var label: nstextfield! override func viewdidload() { super.viewdidload() // additional setup after loading view. label.frame = nsrect(x: 0, y: 0, width: 200, height: 17) label.setneedsdisplay() } } when view loads, label still has original frame set in interface builder, , not newly set frame.
how 1 programmatically move/resize label?
the autolayout system culprit here. when set frame, autolayout system overrides re-establish implicit constraints set in storyboard.
set translatesautoresizingmaskintoconstraints property of label true. tells autolayout system should create new set of autolayout constraints satisfy new frame you've set:
class viewcontroller: nsviewcontroller { @iboutlet var label: nstextfield! override func viewdidload() { super.viewdidload() // additional setup after loading view. label.frame = nsrect(x: 0, y: 0, width: 200, height: 17) label.translatesautoresizingmaskintoconstraints = true label.setneedsdisplay() } }
Comments
Post a Comment