How can I programatically obtain the default height of an UIPickerView instance, in accordance to the resolution and orientation of the device that the app is currently running on?
I would like not to use a hardcoded value for this parameter, in the event that new devices will support different screen resolutions and thus will determine this component to have a different default size.
You can use the frame property of the uipickerview.
The warning that André saw doesn't seem to happen anymore (XCode 4.2; iOS SDK 5.0). If you create it with
initWithFrame
and give it a height of zero, you can then read back it's height from theframe.height
property:gives:
So 216 is the default height.
I couldn't find a definition for this in the headers, so reading it back seems to be the safest way.
It is possible to set a frame with a non-zero height, but Apple say don't do that, and it seems to cause rendering problems.
If you create an instance with a height of 0, it will be overridden with the appropriate default height, and you can just get its
frame.size.height
.However, on iPad this will issue a warning (tested a few days ago). I eventually had to use hardcoded values for iPad...
P.S. This was for a UIDatePicker; not sure if it's the exact same thing for UIPickerView.
With auto layout I was wondering the same due to the fact that you can't pin to the bottom of it.
The default height with no changes to an UIPickerView is
216px