View hierarchy used by the Pages Mac OS X app - objective-c

I need to build a Mac OS X app which requires view hierarchy similar to the Pages app. I understand that their is a toolbar at the top. On the left is a scroll view that contains a custom view but I have problem figuring out the hierarchy on the right, specifically the scroll section used on the right which allows options to hide or show up dynamically depending on the other options.

This is called an inspector view. It is not apart of the public SDK; this is all private code.
If you want to see how it's made start a view debugging session in xcode and attach it to the pages process. What you will find:
Inspector View
Inspector Pane Group view and Inspector Segmented Control
Inspector Pane View and Inspector Pane Disclosure Views.
You can make this fairly quickly from existing UI views and controls.

Related

objects inside Ext.tab.Panel

I am writing simple apps with Sencha Touch 2. I see that the basic object in app/view/Main.js is Ext.tab.Panel.
What other Ext objects can be embedded directly into Ext.tab.Panel? Where can I look up this information?
From the Sencha Touch 2.3.1 docs, Ext.tab.Panel section:
http://docs-origin.sencha.com/touch/2.3.1/#!/api/Ext.tab.Panel
Tab Panels are a great way to allow the user to switch between several
pages that are all full screen. Each Component in the Tab Panel gets
its own Tab, which shows the Component when tapped on. Tabs can be
positioned at the top or the bottom of the Tab Panel, and can
optionally accept title and icon configurations.
Basically, you can put any view class which is subclass of Ext.Container inside a tab panel.
You can put any view you want.You can even put another container inside a container
Have a look at sencha touch docs.
http://docs.sencha.com/touch/2.3.1/#!/guide/views

Working with large views in Xcode and Interface Builder

I am new to Xcode and I'm currently working with a view which is rather large. I am using a scroll view which works perfectly when I run the application, however I find it difficult to work with such a large view in interface builder. Is there any tricks such as making the working area in Interface Builder larger? Or should I simply stop using interface builder and instantiate the GUI-components programatically?
You can change your view size to freeform and set its size to anything you like just for looking at it and then set it back to its original size
There are buttons in the upper right corner of the project window toolbar that will hide the navigator and inspector.
Click the left button to hide the navigator. Click the right button to hide the inspector. Hiding the navigator and inspector will give you more room for the Interface Builder canvas. I recommend starting by hiding the navigator because Interface Builder uses the inspector for many tasks.
Another way to get more room for the canvas is to use the icon view for the object list, which is to the left of the canvas. There is a button in the lower left corner of the canvas that toggles the icon and hierarchical views of the object list.

Sliding Menu in Mac App

How can I make a sliding menu like (as an example) Sparrow's main email menu?
In the case of Sparrow:
It's a column of buttons that essentially slide to reveal a NSScrollView (with custom NSTableView?) with various folders inside (inbox, sent, etc). Clicking on a different account causes that account to slide up to the top and reveals the various folders inside.
How could I go about doing a menu similar to this?
There is some fairly cool Apple sample code here to deal with table views and animation (uses stuff that is generally only available as of Mac OS X 10.7 however):
https://developer.apple.com/library/mac/#samplecode/AnimatedTableView/Listings/ATPopupWindow_m.html%23//apple_ref/doc/uid/DTS40008863-ATPopupWindow_m-DontLinkElementID_26
Also, for basic window resize animation you can use the setFrame:display:animate: method of NSWindow.

How to customize tab bar controller so that tabs appear on the top of the screen?

How to customize tab bar controller so that tabs appear on the top of the screen?Tabs should not appear at bottem of the screen.
Try this,
self.tabBarController.tabBar.frame=CGRectMake(0, 0, 320, 70);
You will need to create a custom control. The standard UITabBar does not offer the option to place tabs at the top unfortunately.
Tabs should not appear at bottem of the screen.
Actually, according to the iOS human interface guidelines, they should:
A tab bar appears at the bottom edge of the screen and should be accessible from every location in the application.
If you really wanted to do what you are asking, you could use a UITabBar directly (not touching UITabBarController). That handles drawing the tab bar itself, but doesn't do any view swapping for you. You should then write a custom container view controller using the view controller containment APIs (iOS 5 only) which you set as a delegate method on your tab bar, and then when the user changes tab, you swap in and out the relevant views.
Or you could use this open source version.
Don't make your top tab bar look like a standard Apple tab bar though, because they'll probably reject it from review. If you use a completely custom look you should be fine.

Objective-C: How to create a Menu with custom UI?

I'm trying to develop an application in Xcode 4.1. I would like to create an application located in the menu bar, like described in this tutorial:
http://cocoatutorial.grapewave.com/2010/01/creating-a-status-bar-application/
But instead of showing a standard Menu when clicking, I would like to show a more graphical UI with some text fields, buttons, etc. like they do in Fantastical:
http://flexibits.com/fantastical
I hope someone can tell me, how I can do.
Here's the Status Bar Programming Topics guide.
Make an NSStatusItem. Set the item's view to a custom view that you create. This view will appear in the status bar and receive mouse clicks.
Make your custom view handle a mouse click by presenting a window with your custom UI.
It's not necessary to use a custom view. All you have to do is set the status item's target & action to your method which shows the window:
[self.statusItem setTarget:self];
[self.statusItem setAction:#selector(ShowOrHideWindow:)];