A modern news application that provides users with up-to-date news articles from various sources using the News API. Built with Swift and UIKit, this application offers a clean and intuitive interface for users to browse, search and share news articles.
The News app is designed to deliver a seamless news reading experience with features like article sharing, search functionality, and customizable settings. Built using MVVM architecture, the app demonstrates best practices in iOS development including responsive design, dark mode support, pagination and search.
-
Splash Screen
- A welcoming splash screen featuring the app icon and name.
-
News Feed
- Dynamic list of news articles from News API
- Smooth scrolling and responsive layout
- Bottom sheet for sharing options
- Native share functionality for article links
- Pagination for seamless content loading
- Loading state indicators during pagination
- Smart cache management for paginated content
-
Advanced Search
- Native search bar implementation
- Smart search with 3+ character threshold
- Smooth animations for search results
- Real-time API integration
- Paginated search results
-
Article Details
- Full article view with rich content
- Image loading with Kingfisher
- Share functionality
- Dynamic navigation bar title
-
Settings
- Theme toggle (Light/Dark mode)
- Push notification management
- App rating integration
- Privacy policy and Terms of use
- Dynamic theme switching
-
Responsive Design
- Support for all iPhone models
- iPad compatibility
- Landscape orientation support
- Auto Layout implementation
The application follows the MVVM+Protocol architecture pattern:
- Defines the data structures, including news articles and app settings.
- Contains no business logic — purely represents data.
- Acts as an intermediary between View and Model.
- Uses protocols to communicate with View and decouple dependencies.
- Handles data fetching, transformation, and state management.
- Implements core features like searching and settings updates.
- Built using UIKit, supporting programmatic UI.
- Uses
UITableView
for displaying articles. - Observes the ViewModel for state changes via delegation.
- Sends user actions to ViewModel through protocols.
This pattern ensures a modular, maintainable, and scalable codebase.
-
Swift
Primary programming language -
UIKit
Framework for building the user interface -
Kingfisher
For efficient image loading and caching -
News API
Primary data source for news articles -
Snapkit
For programmatic responsive design implementation -
UserNotifications
For handling push notifications
-
Clone the repository
git clone https://github.com/yourusername/news-app.git
-
Navigate to Project Directory
cd news-app
-
API Key Setup
- Get an API key from News API
- Add your API key to the configuration
-
Open Project
open News.xcodeproj
- iOS 17.0+
- Clean MVVM architecture implementation
- Reusable TableView components with enums and sections
- Robust network layer
- Efficient view model logic
- Light/Dark mode support
- Pagination support for listing news
- Proper auto layout support for various screen sizes
Screen | Light Mode | Dark Mode |
---|---|---|
News Feed | ![]() |
![]() |
Article Detail | ![]() |
![]() |
Search Results | ![]() |
![]() |
Settings | ![]() |
![]() |