I have a simple popover for a UINavigationController that is anchored on the root views right bar button item. On the iPhone simulator (I tried it on various devices) the navigation bar of the popover aligns nicely with the navigation bar of the root view. I assume this is taken care of by UIKit. Here is a screenshot of the simulator.
However on my physical device there is a slight offset. This is a screenshot on my iPhone 6 physical device. It's weird because there's no offset for the iPhone 6 simulation. Notice they bottoms of the navigation bars are not aligned.
I couldn't find any stack overflow questions addressing this and I'm not sure how to fix it since all we're "supposed" to do is specify the popover anchor (as the plus button) and let UIKit take care of the rest. Is there any way to fix this programmatically? I'm not using storyboards or xibs. I also have touch assist enabled on my physical device.
Related
I have a hierarchy like so:
In storyboard, on iPhones (in all orientations), and when using iPad split screen with another app (see screenshot below with contacts side by side) this all works great.
However, when the iPad app has the full screen, my tab bar images are horizontal instead of vertical.
Anyone know of a way to force the tab bar to change the orientation of it's images so it's vertical? It's almost like the OS doesn't recognize that it should be using the compact traits for this mode on iPad.
Further details:
This is an iPad 9th Gen simulator on iOS 15.4. and is also present on a real iPad (5th gen iOS 15).
I am using SF Symbols for the image in the tab bar
I am using the technique described here so that I can have more fine grained control over whether any given view should be shown in the master nav/tab view or if it should show up in the detail view.
I am using .allVisible for the preferredDisplayMode, tried changing it to primary over with no luck.
I am developing an app (objective c) with a navigation controller. For some reason the whole app is offset from the top of the device. See below, can anyone give me some pointers as I have no idea.
Hiding the Navigation bar makes no difference, either in the storyboard or in code. The storyboard constraints all seem correct, as the title below the navigation bar moves up and down when showing and hiding the navigation bar.
This problem occurs on iPhone SE and iPhone 7, the iPad 2 is ok. The xCode version is 8.1
Any help would be appreciated.
You need to use launch.storyboard in your Project or you need to add launch screens image in your Asset Folder for all the sizes, then this black screen from top and bottom will be removed.
In App Icons and Launch Images setting, you need to set asset and launch screen file. so this black bar will disappear.
I've spent a lot of time attempt to research this issue and haven't gotten any results unfortunately.
[edit: being more explicit with my question]
My question is: why are the objects on my view controller not appearing when I run the iPad simulator? The background color of the view controller is displayed. The navigation tab bar appears as well. But neither of the two objects on my view controller appear (which have constraints on them).
[/edit]
If I look at the info.plist I see that I have "Main Storyboard file base name" with a value of Main (which makes sense, as my one and only storyboard is main.storyboard).
When I run the app within the iPhone simulator, all is well. When I changed the simulator to iPad, this is what happens:
Launch Screen appears
View Controller appears with the background color I have chosen in my storyboard scene.
When in debug, I see that it's going through the code to load up my views as it does when running in the iPhone simulator.
The Tab Bar controller's tab bar appears at the bottom of the view controller as expected.
Is this somehow related to the width and height I have selected? I have it set to: wCompact hAny. When I change it to wAny hRegular, the items I had placed in the scene (a UIView and a UITextField) "disappear."
Some background:
I originally created the app as Universal. But what I want, at least for now because I'm still learning, is just an iPhone app that will also run on an iPad (with that 2x option). I changed the Targeted Device Family to iPhone under both the Target and then later under Project.
I know one option is to just make an iPad layout, but I'd really like to know what I'm doing wrong here.
[edit: one solution]
The resolution I took, although I feel it's not the one I wanted, was to change the size to one that iPad supports and then paste the two objects (UIView & UITextView) into the scene that was defined as wAny hRegular. Then I hooked up those 2 objects to their outlets in the View Controller and I now have my app appearing in the iPad simulator.
My application was written for iOS7 and I am trying to get it updated to iOS 8. My application is configured to only work in Landscape Left and Landscape Right orientations.
For iOS 8 I changed the order by which the screens are navigated and changed one of the modal screens to a push transition. On the main screen I have two UIBarButtonItems on the UINavigationItem. Each of these have a push segue assigned to them that connects to different screens.
When the app is running and one of the UIBarButtonItems is tapped, the screen associated through the segue slides over the main screen as expected. The back button is displayed normally. The problem occurs when the back button is tapped. The screen does not slide off to the right as would be expected.
On an iPhone 4 running iOS 7 the screen always slides down (towards the ground) regardless of the devices landscape left or landscape right orientation.
On an iPhone 6 Plus running iOS 8 the called screen quickly rotates to Upside Down (top towards the home button) and then slides off to home button side. Again it doesn't matter which way the phone is oriented landscape left or landscape right orientation.
I have tried setting the preferredInterfaceOrientationForPresentation, shouldAutorotate to NO, and setting the supportedInterfaceOrientations to UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeRight. Nothing seems to make any difference at all.
My screen navigation is straight forward, I'm no using any custom transitions. It's all through standard push segues.
I need to get the screen "back" transitions working correctly again.
Any help is greatly appreciated!
I have finally discovered what was causing my screens to slide the wrong direction. It turns out that overriding the supportedInterfaceOrientations method in the UIViewController and returning UIInterfaceOrientationLandscapeRight | UIInterfaceOrientationLandscapeLeft confuses the transition in iOS 8 (and devices running iOS 7 also). This was needed for proper operation in iOS 7, but evidently causes problems in iOS 8. So once I removed the code, the screen transitions began working correctly again.
When I write an app an view it on my phone, I have a non-translucent navigation bar. However, when I view on an iPod touch, it does have a translucent bar. This seems to vary from device to device, and it's not app specific either.
This has happened with three different apps I've worked on, with all sorts of devices. All of them are using UINavigationController through a storyboard.
I have seen this in several of my applications now, and I'm wondering if there's a setting I'm missing. Has anyone else seen this, or know why it happens?