Skip to content

turhanGoksu/swift_camp

 
 

Repository files navigation

SwiftCamp ®️

This meaningful project is made possible thanks to the generous support of MasterFabric Technology Information Inc. and EduTech. Aiming to promote knowledge and innovation for the benefit of society, We thank them for empowering us to create this non-profit project.

SwiftCamp provides participants with more than just an understanding of the foundational concepts of the Swift programming language. It also offers hands-on experience in managing processes, planning, and collaboratively developing a mobile application. The program is structured in two phases:

  • Phase 1: Understanding user interface design and fundamental building blocks using SwiftUI.
  • Phase 2: Learning and applying hardware services, API integrations, and real-world application development.

Swift Camp

This application is developed using the VIPER architecture (View, Interactor, Presenter, Entity, Router) to ensure a clean, modular, and maintainable codebase.

How VIPER is Used: View: Focuses on the UI and delegates logic to the Presenter. Interactor: Manages business logic and data manipulation. Presenter: Mediates between the View and Interactor, preparing data for display. Entity: Contains data models and structures. Router: Handles navigation and screen transitions. Benefits: Separation of Concerns: Each layer has a clear role, making the app easy to maintain. Testability: Modular components are simple to test individually. Scalability: Supports adding new features without disrupting existing functionality. With VIPER, this app achieves a structured and scalable architecture that ensures long-term maintainability.

🚀 Achievements of SwiftCamp

  • 💻 Learning Swift Basics: Master the foundational elements of the Swift programming language and design user interfaces with SwiftUI.
  • 📋 Project Management Experience: Develop skills in task delegation, process planning, and coordination within a team environment.
  • 📱 Mobile App Development Process: Gain hands-on experience in creating a mobile application from initial design to deployment.
  • 🔧 Utilizing Hardware Services: Learn to access and integrate hardware features like cameras, sensors, and other device functionalities into applications.
  • 🔗 API and Service Integrations: Implement external services and APIs to create dynamic, user-focused applications.
  • 🤝 Teamwork Skills: Strengthen collaboration and communication skills by taking on various roles within a team.
  • 🌍 Real-World Application: Apply acquired knowledge in practical projects to gain proficiency in the iOS development ecosystem.

🔆 Overall Look'n Feel

SC-Video.mp4

🛠 Attributes

Attributes are properties or modifiers that define the appearance, behavior, and interaction of SwiftUI components. Below is a categorized list of attributes you can apply to your views.

🎨 Appearance Attributes

These attributes define the visual appearance of SwiftUI components, such as colors, shadows, and transparency.

View Details
  • foregroundColor: Sets the color of text or shapes.
  • background: Adds a background to the view.
  • shadow: Applies a shadow effect.
  • cornerRadius: Rounds the corners of a view.
  • opacity: Adjusts the transparency of a view.
  • blendMode: Applies a blend mode to the view.

📐 Layout Attributes

These attributes help control the layout and positioning of components in a SwiftUI view hierarchy.

View Details
  • frame: Sets the size of a view.
  • padding: Adds spacing around a view.
  • offset: Moves the view by a specified amount.
  • alignment: Aligns the content within a container.
  • zIndex: Sets the stacking order of views.

🎞️ Animation Attributes

These attributes allow you to add smooth animations and transitions to enhance user interaction in your app.

View Details
  • animation: Adds an animation to a view.
  • transition: Defines how views appear/disappear.
  • matchedGeometryEffect: Links views for smooth animations.
  • delay: Adds a delay before an animation starts.

👆 Interaction Attributes

These attributes manage user interactions like gestures, taps, and hit testing in your SwiftUI views.

View Details
  • onTapGesture: Detects a tap gesture.
  • onLongPressGesture: Detects a long press gesture.
  • gesture: Adds a custom gesture to a view.
  • allowsHitTesting: Enables or disables user interaction.

⚙️ Functional Attributes

These attributes provide functional capabilities like assigning identifiers, managing environment values, and enhancing accessibility.

View Details
  • id: Assigns a unique identifier to a view.
  • tag: Associates a value with a view.
  • environment: Passes shared data to child views.
  • accessibilityLabel: Provides accessibility information.
  • focusable: Marks a view as focusable.

🔧 Customization Attributes

These attributes allow you to create reusable custom behaviors and prioritize layout preferences.

View Details
  • customModifier: Creates reusable custom modifiers.
  • preferenceKey: Shares data between parent and child views.
  • layoutPriority: Adjusts the layout priority of a view.

⚙️ Project Features

This document highlights all the SwiftUI components and features included in the project. Use this as a checklist to track your progress or ensure feature coverage. ✅

📦 View Containers

Containers are fundamental building blocks in SwiftUI. They allow you to structure and arrange your views hierarchically.

View Details
  • Container Types:
    • VStack
    • HStack
    • ZStack
    • ScrollView
    • List
  • Lazy Containers:
    • LazyVStack
    • LazyHStack
    • LazyVGrid
    • LazyHGrid
  • Navigation & Grouping:
    • NavigationView
    • NavigationStack
    • Group
    • GroupBox

✏️ Text and Images

SwiftUI provides powerful tools for working with text and images, enabling customization and interactivity.

View Details
  • Text Components:
    • Text
    • AttributedText
    • SecureField
  • Interactive Fields:
    • TextField
  • Image Components:
    • Image
    • Label

🔘 Buttons

Buttons and contextual menus enable user interaction, making your app responsive and dynamic.

View Details
  • Button Types:
    • Button
    • Link
    • Toggle
  • Contextual Buttons:
    • ContextMenu
    • Menu

🎛️ Pickers and Controls

Pickers and controls offer flexible ways for users to input data and adjust settings.

View Details
  • Pickers:
    • Picker
    • DatePicker
    • ColorPicker
  • Adjustable Controls:
    • Slider
    • Stepper
  • Indicators:
    • ProgressView
    • SegmentedControl

🔲 Shapes

Shapes are versatile drawing primitives that can be styled and combined for custom designs.

View Details
  • Basic Shapes:
    • Rectangle
    • RoundedRectangle
    • Circle
    • Ellipse
    • Capsule
  • Advanced Shapes:
    • Path
    • CustomShape

🛠️ Modifiers

Modifiers customize the appearance, layout, and behavior of views in SwiftUI.

View Details
  • Appearance:
    • Padding
    • Background
    • ForegroundColor
    • Shadow
  • Positioning:
    • Frame
    • Offset
    • ScaleEffect
    • RotationEffect
  • Effects:
    • Opacity

🎞️ Animations

Animations bring life to your UI, enhancing user experience with smooth transitions and dynamic effects.

View Details
  • Animation Types:
    • Animation
    • withAnimation
    • Transaction
  • Advanced Animation:
    • MatchedGeometryEffect
    • Transition

👆 Gestures

Gestures are essential for detecting user interactions, enabling richer touch-based experiences.

View Details
  • Gestures:
    • TapGesture
    • LongPressGesture
    • DragGesture
  • Advanced Gestures:
    • MagnificationGesture
    • RotationGesture

⚠️ Alerts and Sheets

Alerts and sheets provide ways to display modal content or prompt the user for confirmation.

View Details
  • Alerts:
    • Alert
    • ConfirmationDialog
  • Sheets and Dialogs:
    • Sheet
    • ActionSheet
    • Popover

🏗️ Grid

Grids are used for creating complex layouts with structured rows and columns.

View Details
  • Grid Types:
    • Grid
    • GridRow

🧩 Other Components

Additional components that enhance layout, media integration, and state management.

View Details
  • Layout:
    • Spacer
    • Divider
    • GeometryReader
    • Canvas
    • TimelineView
  • Media:
    • VideoPlayer
    • Map
  • State Management:
    • State
    • Binding
    • ObservedObject
    • EnvironmentObject
    • FocusState

📦 Package Dependencies

Package Version
OneSignalXCFramework 5.2.9
RxSwift 6.5.0

🪽 Volunter Partner

MasterFabric
MasterFabric
EduTech
EduTech

✨ Contributors

gurkanfikretgunak

gurkanfikretgunak
turhanGoksu

turhanGoksu
mehmetalbyrak

mehmetalbyrak
melihalkbk

melihalkbk
yuceel

yuceel
busragedikoglu

busragedikoglu
alakkaya

alakkaya
beyzanuravsar

beyzanuravsar
elifdodanli

elifdodanli
NurhayatYurtaslan

NurhayatYurtaslan
AylinManav

AylinManav
OnurArslan0

OnurArslan0
ayberkgorgun

ayberkgorgun

🧑🏻‍💻 Trainer

Gürkan Fikret Günak
Gürkan Fikret Günak

🧑🏻‍💻 Asistant

Nurhayat Yurtaslan
Nurhayat Yurtaslan

📝 License

Copyright © 2024 - View License

Star History

Star History Chart

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 99.8%
  • Ruby 0.2%