How do you change the appearance of your views inside a popover? Say I have Master-Detail with a top search bar that is gray in horizontal view, but when it's in vertical view inside a popover, I want it to be glossy black to match the popover appearance.
Where would I put this code?
I am tempted to put it in didRotateFromInterfaceOrientation or shouldAutorotateToInterfaceOrientation or willRotateFromInterfaceOrientation.
Anyway, since no one has any opinion, I ended putting it inside willRotateFromInterfaceOrientation and seems to be working fine.
Related
I am in the process of transitioning an app to iOS7. All of the views throughout the app have a 44px empty space at the bottom that appears to be for a bottom toolbar or something, but I am not trying to display a bottom toolbar. This space also exists on views that do have a bottom toolbar and the toolbar just shows directly above it.
The red space shown is actually a view behind the black view. No matter what size I set the frame of the black view to, the red space is always shown. I am also hiding the status bar in plist, so don't know if this is an artifact from that or if it has something to do with navigation bar as they are both normally 44px in height.
I have looked at the transitioning guide and haven't found anything that's worked. Any ideas to what could be causing this and how to fix?
UPDATE:
I have tried setting edgesForExtendedLayout = UIRectEdgeAll and extendedLayoutIncludesOpaqueBars = YES (also tried NO) with no effect. When I look at the subviews of the navigation controller it shows a UIToolBar as hidden, but shows it contains a frame in the exact area the view refuses to resize to even with autolayout constraints.
UPDATE 2:
This is actually a problem with ViewDeckController (https://github.com/Inferis/ViewDeck) and the way it sets it's center view bounds.
I believe it has to do with the UINavigationBar. Try toggling the following options in Storyboard and see if it solves the problem. Namely, the 'Extend Edges' options:
These options can also be set in code with the edgesForExtendedLayout and extendedLayoutIncludesOpaqueBars properties on UIViewController.
If you are transitioning to iOS 7, you should be using an Auto Layout constraint to anchor to the Bottom Layout guide. Control drag from your view to the Bottom Layout guide and choose Vertical Space from the popup menu.
Using frames in iOS 7 is harder and is the way of the past.
Auto Layout is hard to grasp at first, but it is very powerful once you get the feel.
This is actually a problem with third party library ViewDeckController (https://github.com/Inferis/ViewDeck) and the way it sets centerViewBounds for IIViewDeckControllerIntegrated. I was able to figure it out after changing to IIViewDeckControllerContained and seeing the view sized correctly.
In IIViewDeckController.m, just return self.referenceBounds for iOS7 like it does for IIViewDeckControllerContained.
I am trying to create the same type of slide-up/pull-up menu (from the bottom) as the Any.do iPhone app, but not having any success.
The issue I am running into is the app was built with storyboards so I am thinking I might have to scratch that idea and use just code.
Any ideas?
There is no need to get rid of your storyboard to recreate this, that's what IBOutlets are for. Any way, it looks like this was made by creating a UIScrollView that takes up the entire screen. Then add a UITableView to the upper section of the scroll view. Mind you in order for this to work, you'll need to disable scrolling on the scroll view in the background.
From there you can programmatically add the other elements to the scroll view to be rendered off screen, since there are only three they can probably just be buttons. And finally, since scrolling is disabled on the background scroll view you can add an image with a UISwipeGestureRecognizer at the bottom of the screen to manually change the scroll view's content offset property.
If you create an iPad Master-Detail Application and use Portrait orientation, it gives you a slide out tableView on the left.
1. How do you make it to show on the right?
Also, in the landscape orientation, it is split in into two views.
How do you make it so that it will be the same as the Portrait View, like slide the TableView out?
Is it possible to adjust the size of the Detail View?
If you dont want two views in landscape, why do you need a splitView at all? You can just have a UIView with a popover button on the top bar. Then you can add the tableviewcontroller to the popover. To show it to the right you can define the rect or use the rightbarbuttonitem to add the popover.
You can have master on right by passing masterviewcontroller as second parameter to the array assigned to splitViewController.viewcontroller. However, you cannot resize the master and detail views. Hence you will end up having a bigger masterView than the detailview.
Looking at limited functionality of UISplitViewController, it may not be possible to have master on right(properly working as per your requirements). You can have your own controller to get this done or try using opensource options like MGSplitViewController.
you may also like to look into this discussion
I have a UITabBarController displaying a number of settings-screens in my app. I want them to be shown on just a part of the screen for layout reasons. In fullscreen, the lists become unreadable (too wide), there are just a few controls per page making the page feel very empty, and the tabbar buttons are far away from the content (Fitts law).
Using presentModalViewController with the UIModalPresentationFormSheet style gives me the size I want. I do this on top of an empty background, since in my case it doesn't make sense to display anything behind it. The "real" working area is displayed with another presentModalViewController in fullscreen mode on top of it all.
This works but feels like a hack. One problem is, I can't make the background behind the settings dialog move in the transition to fullscreen with the UIModalTransitionStyleFlipHorizontal style.
TL;DR
Can I embed a UITabBarController non-fullscreen in another "background"-view? I can't find any information of how I would do this.
Can I embed a UITabBarController non-fullscreen in another "background"-view? I can't find any information of how I would do this.
Why don't you try it out?
Create a container view of the size you want the tab bar controller to have.
Create the tab bar controller.
[containerView addSubview:tabBarController.view];
So I have a Split View controller and am trying to put a toolbar at the bottom of my root view programmatically. I am currently adding it to the bottom of the table using the [self.tableView setTableFooterView:toolbar]; method. This works fine getting the toolbar on the screen, but it is not anchored to the bottom of the view. It always appears after the last element in the table. How would I go about anchoring it to the bottom of the root view? Should I set the frame to the bottom of the view, and then add it as a subview to the rootview itself? Or can I just adjust the frame and leave it as a component of the TableFooterView? Thanks
You have the right solution in your question.
Set the frame of your toolbar to the bottom of your root view. Be sure and make sure it's the frontmost view by calling:
[myRootView bringSubviewToFront:myBarView];