Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
How to lock landscape orientation? Code view.present(orientations=("landscape",)) does not work anymore
-
I still can rotate my iPad and have portrait orientation. How to disable it?
Thanks!
-
@idchlife see help of ui.View.present
The orientations parameter has no effect on iPads starting with iOS 10 because it is technically not possible to lock the orientation in an app that supports split-screen multitasking.
-
Thanks! Wow, that's a bummer. Makes sense, though
-
You can always use the rotation lock hardware switch (or in the bottom settings menu if your hardware button is set to be mute
-
actually, you could detect rotation in
layout
, then use transform.rotation to manually undo it. -
you might be able to get the gravity vector and flip it back whenever it flips
-
@JonB I have the same question, though a I have never used these functions before. Can you explain this in a coding statement? I assume it will have to run in the update(self) section?
-
https://forum.omz-software.com/topic/3115/ui-and-device-rotation-monitoring/2
Your root view would be one the custom views above, which implement
layout
. Then within layout, you can check the orientation usingui.WebView().eval_js('window.orientation')
returns 0, 90, 180, or 270. (it's possible the webview needs to be added to a view and visible for this to work, though it can be 1x1)You would then use self.transform=ui.Transform.rotation(angle), and also reset the size to proper w and height, which you will have to swap when it rotations 90 degrees.
-
Hi,
I'd like to lock a view to portrait on the iPhone, and the code below doesn't work to do that, for me.
So just to clarify:
view.present(orientations = ['portrait'])
no longer works?
What's the preferred way to lock orientation now? Will the documentation get updated? Once the suggestion above has detected the orientation, how can you lock a Navigation Controller to the correct orientation?
Thanks!
import ui global FRAME_WIDTH global FRAME_HEIGHT message = 'Blah' def scrollview(message): sv = ui.ScrollView() sv.background_color = 'blue' FRAME_WIDTH = ui.get_screen_size().width - 2 FRAME_HEIGHT = ui.get_screen_size().height - 66 sv.frame = (1, 1, FRAME_WIDTH, FRAME_HEIGHT) sv.content_size = FRAME_WIDTH, FRAME_HEIGHT + 500 view.add_subview(sv) tv = ui.TextView() tv.background_color = 'red' tv.frame = (2, 2, FRAME_WIDTH - 4, FRAME_HEIGHT - 4 + 500) tv.font = ('Palatino', 18) tv.editable = False tv.text = message sv.add_subview(tv) view = ui.View() view.name = 'Demo' view.background_color = 'black' view.frame=(0, 0, 400, 400) scrollview(message) view.present(orientations = ['portrait'])
-
@AddledBadger, orientation can still be locked on iPhone, but not with the ”new buggy default” 'sheet' presentation mode - you need to remember to specify 'fullscreen':
view.present('fullscreen', orientations=['portrait'])
-
Superb, thanks, working now.