Tuesday, June 14, 2011

Update after the first week of fulltime development

Hey everyone!

So last week we posted to let you guys know about the tasks that we wrapped up and our plans for starting to develop the settings aspect of the application.  We're getting pretty close to finishing our initial settings page so I thought I'd summarize the process we went through and what we ended up making.

To begin with, we decided we wanted a settings page that looked like the settings application that Apple uses.  We read online after researching a bit that you could use a UISplitViewController to achieve the same look.  "Great!" we thought and we eagerly began working on some UISplitViewController tutorials.

After messing around with the data structure for a while we started to notice something odd...it was incredibly difficult to make the SplitViewController exist on anything but the root view.  Assuming we had simply hit a bump in the road, we consulted the SplitViewController documentation and lo and behold! Apple comes outright and says that Split View Controllers shouldn't be used outside of a root view.

Well that was bad news for us. Here we had found this magical class that could do everything we wanted, but the restrictions on it would keep us from being able to use it with our navigation-based application.  We desperately searched through the depths of stack overflow and the split view controller references but alas, it simply could not be done. Unless you wanted to do something hacky and try to cheat the system, by attaching the split view controller to the rootview and then whenever the application loads quickly push another view on top to hide the split view.  Well, that could have worked but the lack of elegance and the risk that it might get our application rejected from the app store made it seem like a pretty poor option.

And so we looked for alternatives and we found something called the InAppSettingsKit which has a bunch of wonderful open source code that allows developers to create a settings page very easily via editing a plist.  Even more encouraging, there are plenty of apps that use it and are already in the app store.

We looked at a sample project where the InAppSettingsKit was used and then imported the InAppSettingsKit into our project and started working on the plist.  Eventually we ended up with a lovely settings page that looks like this:

The great thing about InAppSettingsKit is it allows you to add setting options that bring the user to a custom view for changing the setting.  We ended up doing this for the color changing settings, seen below

Another feature we wanted to mention was the toolbar transparency setting we added.  During our usability tests a couple of the subjects pointed out that it'd be nice if you could turn toolbars transparent and then show more of the lecture behind them.  This was a great idea and I worked on implementing it and now when you change the transparency setting (using a slider that alters the alpha value of the toolbar) you end up with something like this
As you can see, the lecture image now shows up behind the toolbars.  Turning the toolbars transparent was very simple, but we also had to make sure that the scrollview displaying the lecture extended and retracted depending on what the transparency was set at. This also meant that when you go to the notes view to write on part of the lecture, it will need to show more or less of the image depending on whether or not toolbars are transparent. Lastly, I changed the minimum alpha value on the slider to be .3 because if you make a UI element too transparent, you will actually lose the ability to interact with it even if you click the space it was shown at.

So...we managed to get a lot done last week in regards to the settings, and our application actually saves the settings and will restore them after you close and reopen the application.

The professor we're working with also ordered us the Mimio to work with, and it arrived last week. We haven't had time to use it very much because we were wrapping up the settings, but this week we're going to start looking into the actual transmission of data from a computer to the iPad application.  I don't think that any of us have worked on a program that involved that kind of logic before, so it's going to be an interesting experience for us all.

Lindsey

No comments:

Post a Comment