iPhone Built-in Timer (Clock) App - iphone

How would one go about recreating the iPhone 'Timer' section of the iPhone built-in 'Clock' app?
I am not asking about specifics (I am a developer and code objective-c, etc), but rather am trying to learn proper design patterns. I have included a screenshot of the app below.
I understand that the first portion of the app is an UIDatePicker. What types of objects are the "When Timer Ends" and "Start" buttons? The "When Timer Ends" portion looks like a UITableViewCell, and the "Start" button looks like a UIButton. Are all 3 of these objects in one UITableView? How would one go about creating the gradients belonging to the "When Timer Ends" and "Start" objects? Are these simply images? Or are the gradients created Programmatically?
I generally like to stay away from Interface Builder and code my views Programmatically.
Thanks a lot!

There is no need for a UITableView here.
In my opinion, there can be a UIDatePicker and 2 UIbuttons. The buttons use 2 different backgrounds - but they are simple custom buttons.
For the When Timer Ends there is also a UILabel to display Digital as this will change accordingly with the user's selection.

Related

How to implement UIPopover kind of functionality in iPhone?

In my app i have a PieChart which has certain divisions denoting different areas or region. Every partition has its own color but there are like 10 partitions and i want to show which part shows which region. It would have been an easy task with iPad as we have UIPopover but here in iPhone i don't know what to do, so i thought if there is any suggestion any one can make. I want to PieChart be visible with the detail about each partition.
Thanks,
You need to make a UIview with tableview and imageview inside it .
You can make your own custom Popover type control by making a UIView then adding the desired elements to it and making it as a subview or keeping this view hidden from the start then making it visible on button press.
Here you will find many popover controllers http://cocoacontrols.com/search?q=popover

iPhone application - pop up dialogue - sort of

I have an iPhone application which is, in essence, a list. There is a UINavigationBar at the top, and then there is a UITableView which holds the list. I'd like to have an option in some way or another of allowing the user to sort the list in different ways. So, in my mind, I picture having a NavigationItem on the UINavigationBar that, when touched, a little pop up dialogue comes up. You select the "sort" you want, a check mark appears next to it, and the dialogue goes away.
I'm not really sure how to do this. I tried creating a UIView, adding a UIViewController onto it (which held this list of different "sort" parameters (ex. sort alphabetically, sort by date, etc) in a UITableView. But the UITableView isn't responding to any touches, and I'm not sure why.
Does anyone have an idea for using Apples wonderful interface for having an option like this? I can't use a UISegmentedControl below the UINavigationBar, because there are 5 possible options, and I can't fit all that in a single UISegmentedControl.
This sounds like a job for the UIPickerView. You could just slide one up from the bottom of the view whenever that button is pressed. I've done this in the past and it works well.
You won't get a checkmark, but if you want a pop-up I suggest using a UIAlertView.
Have you looked into UIActionSheet at all? https://developer.apple.com/documentation/uikit/uiactionsheet
It seems like it might be a good fit for this approach. The action sheet will be a bit tall since you will have 5-6 buttons in it, but it should get the job done and they are really easy to implement.
The way you are approaching it with displaying another view with its own UITableView in it would work also, but it doesn't seem like the best approach to me. Granted, if you are set on going with that approach, provide us with some code so we can try to figure out why the UITableView isn't responding to touches.

How do I center UIBarButtonItem with custom look?

Alright, so I have a TableView in one of my Views in my iPhone app. I'm using a UINavigationController, so using that I created the UIToolBar at the bottom of the table. Works great. However, I want the items in the toolbar to resemble how the Facebook app has them:
Not only would I like the Buttons (I will have only 2) to resemble those. (They connect when touching another button), but I really want to show the user what "Tab" they are on. In the image above, it is obvious to the user they are on the Wall. When they touch "Info", it becomes darkened and the user knows where they are. Does anyone know how they did it so my app may also have clear navigation?
What you have on a picture is standard UISegmentControl with UISegmentedControlStyleBar style - you can use it.
Just use a UISegmentedControl like they did

Drag & sweep with Cocoa on iPhone

I'm about to start a new iPhone app that requires a certain functionality but I'm not sure if it's doable. I'm willing to research but first I just wanted to know if I should at least consider it or not.
I haven't seen this in an app before (which is my main concern, even though I haven't seen too many apps since I don't own an iPhone), but an example would be the iPhone shortcuts panels: you can hold on an app, and then drag it to another panel, sweeping while still dragging it. But this is the core app, is it possible to reproduce something similar within a normal app?
I only need to be sure it can be done before I start digging, I don't need code examples or anything, but if you have some exact resources that you consider helpful, that would be appreciated.
Thanks!
Yes. If you have your custom UIView subclass instance inside a UIScrollView, your view controller just needs to set the UIScrollView to delay content touches and not allow it to cancel touch events.
[scrollView setCanCancelContentTouches:NO];
[scrollView setDelaysContentTouches:YES];
When the user taps and holds in the custom view, the event goes to that custom view, which can process the touch events to drag an item around, but if the user quickly swipes, it scrolls the view.
The "panel" view that you're referring to appears to be a UIPageControl view — although, perhaps, the specific incarnation of this view that Apple uses for the iPhone's home page may be customized.
Instances of generic UIView views that you might touch-and-drag will receive touch events. By overriding methods in the view, these events can be processed and passed to the page control, in order to tell it to "sweep" between pages.
If I wanted to do what you're asking about, that's how I might approach it. It seems doable to me, in any case.
Start with this: Swip from one view to the next view
Try using a UIButton that tracks the time since the state of the button changed to "highlighted". You may need to do this in order to track the dragging and move the button around:
Observing pinch multi-touch gestures in a UITableView
Check to see if the button starts overlapping one side of the screen while being dragged. If s certain amount of time elapses since the button first started overlapping the edge and then manipulate the UIScrollView so that it switches to the next page on the corresponding side of the screen
You may need to use NSTimer to keep track of how long the button is held down, etc.
In any case there's no reason why this couldn't work.
If UIButton doesn't work then perhaps try a custom subclass of UIControl (which tracks the same touch down actions etc.). If that doesn't work then use the window event intercept thing to track everything.

How to realize the same effect like iPhone's homescreen

I want to add some custom buttons and realize the same effect like the iPhone's home screen. What I can think of is to calculate the position of each button and add them to the view. Are there any other ways to do this? e.g. add buttons to the tableview
Check TTLauncherView from Three20,
I realized the same view of the thumbnails in the photo app (which in principle differs only because of the background color and the rounded effect of the buttons) using a custom cell (with 4 UIButtons inside) in a normal tableview.
In my case, this is because I need to scroll up and down, in your specific case there should be a way to "lock" the table from scrolling. By the way, for this reason, it could be simpler to design the custom view in the interface builder, it is very quick to design such a view, and then create a custom controller to provide simple methods to assign icons and actions to the UIButtons dynamically.
You could also look at the Three20 libraries as already suggested, it is already implemented, but you app will easily be rejected by Apple if you do so.