[TIMOB-18195] iOS: Navbar appears to shrink when returning from a window with forced orientation
GitHub Issue | n/a |
Type | Bug |
Priority | Medium |
Status | Closed |
Resolution | Won't Fix |
Resolution Date | 2016-10-19T13:53:27.000+0000 |
Affected Version/s | Release 3.4.1, Release 3.5.0 |
Fix Version/s | n/a |
Components | n/a |
Labels | look1, qe-3.5.0 |
Reporter | Ewan Harris |
Assignee | Hans Knöchel |
Created | 2014-12-12T18:04:10.000+0000 |
Updated | 2018-08-02T22:20:02.000+0000 |
Description
Description
When returning from a window that uses forced orientation, if you are in an orientation that is not supported and return to another window which does not use forced orientation the navbar appears to shrink when you return to protrait mode. Also when returning to the window the icons at the top of the device disappear until you rotate the device too
*Note*
To 'unshrink' the navbar you just need to simply rotate the device.
This *is not* a regression the same occurs in 3.4.1.GA
Steps To Reproduce
1. Using the attached app.js build to an iOS device.
2. Tap the button to open the second window and rotate to an unsupported orientation (in the app.js Titanium.UI.LANDSCAPE_LEFT and Titanium.UI.UPSIDE_PORTRAIT)
3. Tap the button and close the window
4. Go back to portrait
Actual Result
3. The icons at the top of the screen have disappeared
4. The navbar appears 'shrinked'
Expected Result
3. Nothing should be malformed, the icons should appear
4. Nothing should be malformed
Attachments
File | Date | Size |
app.js | 2014-12-12T18:06:19.000+0000 | 1272 |
Recording.mov | 2014-12-12T18:05:37.000+0000 | 1510313 |
Has there been any progress on this issue? Is it an issues with the Titanium SDK or iOS? Is there currently any way to get around it?
Is there any progress in resolving this issue? We have wasted considerable development time and effort in attempting to work around this issue and ultimately had to revert back to using an older version of the Titanium SDK that didn't display this issue. This is not a solution that is viable in the long term as future app submissions to the app store will require 64bit support.
Any progress on this bug? I noticed it was included into a sprint, what was the outcome?
This should have been moved to the next sprint. It's unclear to me why that didn't happen. I've updated it now so it will be revisited.
Has this been allocated to a Sprint yet?
Ingo Muschenetz - any update on this?
[~cng] This should either go in 5.0.0 or 5.0.1. Please take a look.
Ond second thought, this may be a won't fix. See related tickets.
"Forced rotation" is different than what this example shows. In older SDK versions, you could call a method to rotate the window without the user having to rotate the device. (We called that "forced rotation.") This ticket is describing navigating between windows that have differing supported orientations. I think that's different, and should be supported.
The original window does have a "forced orientation," so this might be an edge case of that particular class of tickets.
To get this rolling: The issue is around [this snippet of code](https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiRootViewController.m#L1281-L1298) where we are actually transforming the view to match the forced orientation. Again, this won't ever be allowed natively and Apple will very likely reject apps these days because of not following there Human Interface Guidelines. Every solution that could fix this messes up the core by adding even more layout hacks. I'm not sure if we really want this. Finally, I do have a fix that *could* be applied after line 1920:
It will set the orientation back to the one of the target (which is the portrait orientation in this case). However, although this is not private API usage, this way to set the value is insecure and not future-proof, because it might stop working if Apple ever changes the value of this key (referring to [this post](http://stackoverflow.com/a/26358192/5537752)). So if someone wants to have this behavior anyway, the above snippet is the way to go, but I would suggest to not support it in our SDK.
Closing old "Won't fix" tickets. If you disagree, please reopen.