Note, I'm looking to make a 1px line, not a 1pt line. Meaning it should be 1px regardless of screen scale (so 0.5pt on Retina devices).
I can do this programmatically, but can I do it in the Interface Builder? For example I cannot set a UIView to have a height of less than 1.
If I can do it in IB then I don't have to declare an outlet and manually set the frame in awakeFromNib
.
Just in case someone else comes here wanting to know how it can be done programmatically, heres how you do it:
Make a height constraint in IB to the desired view and set the constant to 1.
Then you will need to CTRL+Drag from the constraint into your custom view or ViewController.
Whenever the Xib is loaded, be it in awakeFromNib
or viewDidLoad
, you are going to set the constant of the constraint to the scale of the display:
onePixelViewHeightConstraint.constant = 1/UIScreen.main.scale//enforces it to be a true 1 pixel line
self.onePixelViewHeightConstraint.constant = 1.f/[UIScreen mainScreen].scale;//enforces it to be a true 1 pixel line
Enjoy