At an internship last summer, I worked on the front-end of an iOS application. When adding new features, I would get a very detailed specification from a UX designer, and then I would have to essentially re-do his work by programming that interface using Xcode and Swift. After doing that, I could start adding functionality, but first I would usually spend hours going back and forth with the UX designer about little details I might have missed, like a screen component being off by a couple pixels or using the wrong color/font size for text. I decided that there must be a simpler and more efficient way for UX designers and programmers to work together to create iOS applications.
What it does
iDesign is a tool that allows UX designers to design iOS applications so that they look exactly as intended. By using a simple drag-and-drop interface, they can add UX components to the screen in the exact location and size they desire and specify other component information such as corner radius. Then, the programmer needs to add only two lines of information about the class and iDesign will auto-generate Swift code that produces the view and scales it to all iPhone screen sizes (iPhone 5 and later). This makes the programmer's job a lot easier because he/she only has to make sure the app functions exactly as intended, without having to worry about how it looks.
How I built it
I built it the old-fashioned way using Swift and Xcode. If I could build it again, I would just use iDesign to auto-generate about 1/3rd of the total lines of code for the app!
I integrated some of Apple's APIs such as an image picker and sharing pop-up but did not integrate 3rd-party APIs because I didn't have time after coding up the views and the code generation algorithm.
Challenges I ran into
My entire team abandoned me! This meant I had to cut some features, such as additional component specification and a backend to allow for easier data storage and sharing between UX designers and developers. Ironically, one teammate who was a novice at iOS programming left because he had too much trouble visualizing the screen as he was coding it - a problem that iDesign fixes!
Accomplishments that I'm proud of
I'm proud of myself for not giving up and writing all of the code alone when I was planning to have the help of 3 people. Additionally, I'm very proud of the finished product because although it's not as feature-heavy as I would have liked, it's functional and people can actually use it to generate Swift code for their projects.
What I learned
I learned that I'm capable of doing a lot in one day! I also learned how to use more of Apple's classes such as UITextField, UIPanGestureRecognizer, and UIImagePickerController. Lastly, I learned that UX design is difficult; although this is a UX design app, I think the UX is the worst part of the app!
What's next for iDesign
I plan to add additional features to iDesign such as more robust error handling, accounts/sharing, and additional component specification options. I will use iDesign to generate code for my other Swift projects, and may even publish it after ironing out more of the kinks.