Skip to content

SahilSainiYML/ExploringUIKit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

ExploringUIKit


In this series, you will explore different classes and API provided for iOS apps.

Titbit 1 - UICollectionView with UIContextMenu

Using UICollectionView, you will create a grid layout and use UIContextMenu to display a quick custom preview. A great way to enhance user experience in your apps is by implementing this feature.

Learning stack:

  • How to create a grid layout with equal spacing around UICollectionView items?
  • How to show a custom preview using UIContextMenu?
  • How do I view menu items and submenu items along with a quick preview?
  • How to programmatically add constraints without a library?
  • How to programmatically create UIs for an app?

Titbit 2 - Chat Messages using UITableView

Using UITableView, it is easy to create user interface for chat messages. Programmatically creating the chat messages UI using UITableView gives you fine-grained control over the appearance and behavior of the interface. You can customize the table view cells, handle user interactions, and implement features like message threading, timestamps, and multimedia attachments according to your requirements.

Learning stack:

  • How to implement table cells to show received and sent messages using a single cell?
  • How to create an input view to enter the message?
  • How to show the input view along with the keyboard appearing and dismissing?
  • How to programmatically add constraints without a library?
  • How to format the date to display in a customized way?
  • How to sort and group messages according to date?

Titbit 3 - Photo Gallery with Zoom in/out

UICollectionView is a powerful component that allows you to display and manage a collection of items in a grid-like or custom layout. It provides a flexible foundation for creating various types of interfaces, including photo galleries. It's important to note that implementing zoom in/out functionality can involve more complex logic, such as managing zoom scales, calculating zoom levels, and handling gesture interactions. But, you can implement all of these features quickly by programmatically.

PhotoGallery.mp4

Learning stack:

  • How to create a grid layout with equal spacing around UICollectionView items?
  • Perform actions like Save, Share, Copy, and Delete operations on an image by showing the context menu.
  • Show a photo gallery with all photos and a selected index.
  • Implement a zoom in/out feature using UIScrollView.
  • Set the zoom scale according to the image size.

Titbit 4 - Download Video with Progress

In your apps, downloading a video (or other format) file and showing continuous progress with animation is a common task when dealing with media content or file transfers. To achieve this, you can use the URLSession class, along with a CAShapeLayer with an animation using CABasicAnimation to visualize the download progress.

DownloadProgress.mp4

Learning stack:

  • How to download a video (or any other file) from a URL using the URLSession class.
  • How to draw a circular ring shape layer using UIBezierPath and CAShapeLayer?
  • How to implement pulsing animation using CABasicAnimation?
  • How to show continuous downloading progress to the user?
  • How to save the video file in the photo gallery after downloading it?

and many more...


Connect with me

Feel free to reach out if you have questions or if you want to contribute in any way:

👉 Topmate (Connect 1:1 with me)

👉 Instagram (Random updates)

👉 Linkedin (Connect with me)

Don't forget to click on 'Star' button 🌟

If you find any issue, please create an issue by mentioning the project title. Additionally, you can create an issue for any project if you would like to request a feature.


Happy Coding !!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%