SwiftUI and Combine – Stories instagram widget

Features

  • Long tap – pause stories showcase
  • Tap – next story
  • Leeway – pause before start stories
  • Customize component with you own stories and every story with it’s own view
  • Customize time longivity for every story
  • iOS and macOS support
  • Customizable dark and light scheme support for every story

1. Stories

Define enum with your stories conforming to IStory ** There must be defined at least one story**

    public enum Stories: IStory {
          
        case first
        case second
        case third

        @ViewBuilder
        public func builder(progress : Binding<CGFloat>) -> some View {
            switch(self) {
            case .first: StoryTpl(self, .green, "1", progress)
            case .second: StoryTpl(self, .brown, "2", progress)
            case .third: StoryTpl(self, .purple, "3", progress)
            }
        }
        
        public var duration: TimeInterval {
            switch self{
            case .first, .third : return 4
            default : return 3
            }
        }

        public var colorScheme: ColorScheme? {
            switch(self) {
            case .first: return .light
            default: return .dark
            }
        }

    }

2. Create stories widget

  • manager – package standard manager StoriesManager.self for managing stories life circle. Define your own manager conforming to IStoriesManager if you need some specific managing processe
  • stories – stories conforming to IStory

    StoriesWidget(
        manager: StoriesManager.self,
        stories: Stories.allCases
    )

Optional

  • strategy – default strategy for the item menu width allocation is auto
Size strategy Description
circle Repeat stories
once Show just once
  • current – start story if not defined start with first

  • leeway – delay before start stories

SwiftUI example of using package

d3-stories-instagram-example

click to watch expected UI behavior for the example

click to watch expected UI behavior for the example

click to watch expected UI behavior for the example

Documentation(API)

  • You need to have Xcode 13 installed in order to have access to Documentation Compiler (DocC)
  • Go to Product > Build Documentation or โŒƒโ‡งโŒ˜ D

GitHub

View Github