iOS 11: `UIBarButtonItem`s having placement and usage issues - ios

We have an app that has been around since before the days of storyboards. Prior to iOS 11 everything was fine after we updated it to be 64 bit. We have found two issues when running under iOS 11:
On iPhones the single UIBarButtonItem in the navigation bar's RightBarButtonItems isn't being placed all the way to the right as usual (the left side buttons is in the proper position).
On iPads we have what looks much like a segmented control (but made of individual buttons). It works fine when it is not in any kind of bar, but when it is in a bar it doesn't get touches.
In both cases I have used the UI navigator in Xcode to see that iOS 11 has added a couple extra views between bars and buttons. One of the added views is a bar content view (specific class depends on wether it is a toolbar or navigation bar; _UIToolbarContentView or _UINavigationBarContentView). The other added view is consistent among all kinds of bars, _UIButtonBarStackView.
In issue 1 above the added stack view is adding a very wide zero height view after the right bar button that is pushing the button way to the left (like it is trying to fit on an iPhone 4's screen far). Since the class has an underscore in front of it and isn't listed in the docs it must be a private class so even if I did dig into it and figure out how to keep the extra padding from getting added to the end it would get rejected by Apple for using private API.
I can't be sure what of the new views is intercepting the touches for the second issue but given that they are the only real differences I see between iOS 10 & 11 they seem the most likely culprits.
As I mentioned this was built before storyboards so the UI is built in xib files.
Has anyone run into issues with these new views and found a way to solve them? Or should I just rip out the whole UI and rebuild it?

Related

How to smoothly translate view in iMessage extension in iOS 10?

I have issue when I try to push view controller in willTransitionToPresentationStyle:. The view was blinking for a split second before it fully expanded. It might be a small glitch or bug since iOS 10 and Xcode 8 are still in beta. But when I manually requested to change presentation style to MSMessagesAppPresentationStyleExpanded by calling requestPresentationStyle: after I push view controller, it went to expand mode more smoothly. Does anyone have similar issue?
I have had similar problems with transitions in iMessage apps. I think this should improve considerably when iOS 10 and Xcode 8 come out of beta, but for now we have to deal with Xcode's bugs.
There's a few things I've done to make this look better. Inside my extension I have a method that checks the presentation style every time the view changes. This method manages two different UIs - one for MSMessagesAppPresentationStyleExpanded and one for MSMessagesAppPresentationStyleCompact. This method hides and shows specific views accordingly. In my compact UI I have a button that allows the user to expand the interface by clicking it (this is basically the same as clicking the up arrow at the bottom right of the screen).
I've noticed that if you let the user expand the messages app after the view has been loaded for a while the transitions are much smoother and less buggy. Not sure why this is the case, but you should give it a try. Also, I've found segues to be extremely buggy, so that's why I went with keeping everything on one view controller.

iPhone App not showing up properly on iphone 6 simulator

My app works good on iphone 4s, 5 , 5s simulators. On iphone 6,it shows up weirdly. It does not occupy the entire screen
What could be the issues?
if you are using the Auto resizing just under stand the concept for example
assume that u have a book self , u need to layout the book in the book self so u need to do the following steps
initially arrange the book self (this is your main View).
arrange the all books in inside the book self where u need the location (this is your subview, buttons, labels, all UI Elements).
u keep to follow the above two steps in always. got it
need reference follow the apple tutorial
this tutorial may also help u
The black view is an added view? If the goal is just to set the background color, better to just set the color of the root view.
If you're not using autoLayout (and I don't reccomend it, it's more trouble than it's worth in most cases) one simple to handle different screeen sizes is programatically.
Everything in the view in Interface Builder needs to be an outlet.
in -viewDidLoad, set the center of each view. For example, to center the mobile number text: [self.enterYourMobileNumberLabel setCenter: CGMakePoint(self.view.center.x, self.enterYourMobileNumberLabel.center.y)]
You could also set the frame for more percise handling, etc., using margin constants. Frames are often more code and more cumbersome, but AutoLayout is a nightmare.
Resolved the issue. Thanks for your valuable responses users.It has got nothing to do with Autolayout or autoresizing.
Just go to images.xcassets, right clicking in the navigator area, add launchImage. Then select your project (or target), go to general-->App Icons and Launch images and set Launch Images Source as Launch Image and most importantly, set Launch Screen file blank.
The app would now work well in iphone 6 simulator too.

Auto adjust layouts after restoring iOS status bar

After initially designing my UIViewControllers in storyboard without a status bar, I have been instructed that we need to put them back in. Now all the layouts overlap the status bar. Is there an easy way to have everything automatically adjust to start with y=0 below the status bar? Moving and re-pinning everything to the top layer guide is going to be both tedious and error prone - seems like it should happen automatically.
I am using Xcode 6.1, targeting iOS 7.1 and later.
I think there is just one way to make a script to rewrite Storyboard XML file. You try to change constraints for one ViewController manually and check the difference.

Xcode5: Move child tabBarController to the top

This question has been asked many times before but since it has been a while since, maybe things have improved for xCode5 and iOS7. I don't know so I am asking it again:
I have a Tab Bar Controller whose tabs I want to appear on top as opposed to at the bottom. Is there a way to do this with the present iOS IDE tools? (i.e. Xcode5, iOS7, etc.)

iOS5 delete tableView section animation

I have a tableView with a few sections. When I remove all rows from a section, I also remove the section with the UITableViewRowAnimationTop animation (so it slides up). When running the app on an iOS 4 device, the deleteSections: withRowAnimations: method correctly makes the section slide up and disappear behind whatever is above it. However on iOS 5, the section slides up but stays infront of whatever is above it, then disappears once it's finished sliding. What could be wrong?
FYI: I'm using iOS5 but have changed the iOS deployment target to iOS 4.0, so my app will run on all iOS version from 4 upward, and have changed the architecture to armv6 armv7
EDIT: For testing, I created an empty project with just a UITableViewController, which had a couple of sections with a couple of rows in each, nothing fancy. Got the same behaviour, so although I'm really hesitant to do this (because it's almost never the case), I'm going to go out on a limb and say this is a bug in iOS5?
Having a similar problem. Popping a view controller where the animation is supposed to slide the prior view in from the left (works fine on iOS 4). But on iOS 5 the bulk of the page appears immediately while only the bottom tab bar slides in from the left. Have single-stepped through the code on both versions and it appears to be taking the same path right up to the popViewControllerAnimated call.
Unfortunately this is a very complex app (unnecessarily complex, but that's another story) where most of the screens are dynamic, so it's hard to simplify down to a test case. No obvious solution so far.

Resources