PhoneArt is an innovative iOS application that enables users to create mesmerizing circular art patterns through an intuitive touch interface. The app features a dynamic canvas where users can manipulate geometric shapes by adjusting properties such as rotation, scale, and layering to produce unique artistic compositions.
- Swift & SwiftUI - Modern declarative UI framework for building the native iOS interface
- XCTest - Comprehensive testing framework for unit and UI testing
- Xcode - Primary development environment with integrated debugging and testing tools
- MVC Architecture - Traditional Model-View-Controller pattern for organizing code, where Models handle data, Views display the interface, and Controllers manage the interaction between them
As of 12/10/2024, the following features are available:
- Interactive canvas for creating circular art patterns
- Real-time shape manipulation through touch gestures (drag, pinch, rotate)
- Properties panel for precise control over:
- Rotation: the rotation we want to apply to each layer
- Scale: the scale we want to apply to the whole canvas. This will be separate from the zoom gesture, which is to be implemented in the future
- Layer count: number of shapes in the pattern, each layer will be rotated by the set amount
- Position reset functionality
- Responsive and fluid user interface
- Clone the repository
- Open the project in Xcode (Version 15.0 or later recommended)
- Build and run the application on iOS 16.0+ devices or simulator
- Launch the app to access the main canvas
- The canvas will be centered on the screen, and the user will be able to drag the canvas around.
- The blue button on the top right will allow the user to reset the canvas to the center
- The properties panel will be on the bottom left, and will allow the user to adjust the rotation, scale, and layer count.
- The canvas will appear as empty since the layer count is set to 0
- The user can then adjust the available properties, and the canvas will update in real time.
- With the current implementation, I would recommend setting the scale to the minimum to see the full effect of the rotation and layer count.
The project includes comprehensive test coverage:
- Unit tests for core functionality
- UI tests for user interactions
Developed by:
- Aditya Prakash
- Zachary Letcher
- Emmett de Bruin
- Noah Huang