[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7076":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},7076,"BWWalkthrough","ariok\u002FBWWalkthrough","ariok","BWWalkthrough is a simple library that helps you build custom walkthroughs for your iOS App","",null,"Swift",2751,236,57,3,0,59.12,"MIT License",false,"master",true,[],"2026-06-12 04:00:32","\u003Cp align=\"center\" >\n\u003Cimg src=\"http:\u002F\u002Fwww.thinkandbuild.it\u002Fgifs\u002Fbwwalkthrough.png\" width=\"200\"\u002F>\n\u003C\u002Fp>\n\u003Cbr>\n\n[![CocoaPods](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fv\u002FBWWalkthrough.svg)]()\n[![Carthage Compatible](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCarthage-compatible-4BC51D.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FCarthage\u002FCarthage)\n[![Platform](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fp\u002FBWWalkthrough.svg?style=flat)](http:\u002F\u002Fcocoadocs.org\u002Fdocsets\u002FBWWalkthrough)\n[![Twitter](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftwitter-@bitwaker-59ADEB.svg?style=flat)](http:\u002F\u002Ftwitter.com\u002Fbitwaker)\n\n\n## What is BWWalkthrough?\nBWWalkthrough (BWWT) is a class that helps you create **Walkthroughs** for your iOS Apps.\nIt differs from other similar classes in that there is no rigid template; BWWT is just a layer placed over your controllers that gives you complete **freedom on the design of your views.**.\n\n![Preview](http:\u002F\u002Fwww.thinkandbuild.it\u002Fgifs\u002FBWWalkthrough_mini2.gif)\n\nVideo preview [Here](http:\u002F\u002Fvimeo.com\u002F106542773)\nA dedicated tutorial is available on [ThinkAndBuild](http:\u002F\u002Fwww.thinkandbuild.it\u002Fcreating-custom-walkthroughs-for-your-apps\u002F)\n\nThe class comes with a set of **pre-built animations** that are automatically applied to the subviews of each page. This set can be  easily substituted with your custom animations.\n\nBWWT is essentially defined by 2 classes:\n**BWWalkthroughViewController** is the Master (or Container). It shows the walkthrough and contains UI elements that are shared among all the Pages (like UIButtons and UIPageControl).\n\n**BWWalkthroughPageViewController** defines every single Page that is going to be displayed with the walkthrough inside the Master.\n\n## What it's not?\nBWWT is not a copy-paste-and-it-just-works class and it is not a fixed walkthrough template. If you need a simple no-configuration walkthrough, BWWT is not the right choice.\n\n## Installation\n> Note: There is a known issue with IBOutlets and Carthage that prevents Outlets from working correctly. \n> I see something similar reported for other [projects](https:\u002F\u002Fgithub.com\u002Fxmartlabs\u002FEureka\u002Fissues\u002F295) too. \n> My suggestion is to follow the manual installation instructions, as it is just matter of drag and drop 2 files in your project. \n> I know you cannot update the library automatically going that route... but IBOutlets are needed for a project like BWWalkthrough. \n\n### With CocoaPods\n\nBWWalkthrough is available through [CocoaPods](http:\u002F\u002Fcocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\npod \"BWWalkthrough\"\n```\n\n### With Carthage\n\nInclude this line into your `Cartfile`:\n\n```ruby\ngithub \"ariok\u002FBWWalkthrough\"\n```\n\nRun carthage update to build the framework and drag the built BWWalkthrough.framework into your Xcode project.\n\n### With Swift Package Manager\n``` swift\n\u002F\u002F swift-tools-version:5.0\t\nimport PackageDescription\n\t\nlet package = Package(\nname: \"YourTestProject\",\nplatforms: [\n    .iOS(.v10),\n],\ndependencies: [\n    .package(url: \"https:\u002F\u002Fgithub.com\u002Fariok\u002FBWWalkthrough\u002F.git\", from: \"4.0.1\")\n],\ntargets: [\n    .target(name: \"YourTestProject\", dependencies: [\"BWWalkthrough\"])\n]\n)\n```\nAnd then import wherever needed: ```import BWWalkthrough```\n\t\n#### Adding it to an existent iOS Project via Swift Package Manager\n\t\n1. Using Xcode 11 go to File > Swift Packages > Add Package Dependency\n2. Paste the project URL: https:\u002F\u002Fgithub.com\u002Fariok\u002FBWWalkthrough\n3. Click on next and select the project target\n\t\nIf you have doubts, please, check the following links:\n\t\n[How to use](https:\u002F\u002Fdeveloper.apple.com\u002Fvideos\u002Fplay\u002Fwwdc2019\u002F408\u002F)\n\t\n[Creating Swift Packages](https:\u002F\u002Fdeveloper.apple.com\u002Fvideos\u002Fplay\u002Fwwdc2019\u002F410\u002F)\n\t\nAfter successfully retrieved the package and added it to your project, just import `BWWalkthrough` and you can get the full benefits of it.\n\n### Manually\n\nInclude the `BWWalkthrough\u002FBWWalkthroughViewController.swift` and the `BWWalkthrough\u002FBWWalkthroughPageViewController.swift` files into your project.\n\n## How to use it?\n\n#### Define the Master\n\nAdd a new controller to the Storyboard and set its class as **BWWalkthroughViewController**. This is the Master controller where every page will be attached.\n\nHere you can add all the elements that have to be visible in all the Pages.\n\nThere are 4 prebuilt IBOutlets that you can attach to your elements to obtain some standard behaviours: UIPageControl (**pageControl**), UIButton to close\u002Fskip the walkthrough (**closeButton**) and UIButtons to navigate to the next and the previous page (**nextButton**, **prevButton**).\nYou can take advantage of these IBOutlets just creating your UI elements and connecting them with the outlets of the Master controller.\n\n#### Define the Pages\n\nAdd a new controller to the Storyboard and set it has **BWWalkthroughPageViewController**. Define your views as you prefer.\n\n#### Attach Pages to the Master\n\nHere is an example that shows how to create a walkthrough reading data from a dedicated Storyboard:\n\n```swift\n\u002F\u002F Get view controllers and build the walkthrough\nlet stb = UIStoryboard(name: \"Walkthrough\", bundle: nil)\nlet walkthrough = stb.instantiateViewControllerWithIdentifier(“Master”) as BWWalkthroughViewController\nlet page_one = stb.instantiateViewControllerWithIdentifier(“page1”) as UIViewController\nlet page_two = stb.instantiateViewControllerWithIdentifier(“page2”) as UIViewController\nlet page_three = stb.instantiateViewControllerWithIdentifier(“page3”) as UIViewController\n\n\u002F\u002F Attach the pages to the master\nwalkthrough.delegate = self\nwalkthrough.add(viewController:page_one)\nwalkthrough.add(viewController:page_two)\nwalkthrough.add(viewController:page_three)\n```\n\n## Prebuilt Animations\nYou can add animations without writing a line of code. You just implement a new Page with its subviews and set an animation style using the runtime argument {Key: **animationType**, type: String} via IB. The BWWalkthrough animates your views depending on the selected animation style.\n\nAt the moment (WIP!) the possible value for animationsType are:\n**Linear**, **Curve**, **Zoom** and **InOut**\nThe speed of the animation on the X and Y axes **must** be modified using the runtime argument {key: **speed** type:CGPoint}, while the runtime argument {key: **speedVariance** type: CGPoint} adds a speed variation to the the subviews of the page depending on the hierarchy position.\n\n**Example**\nLet’s say that we have defined these runtime arguments for one of the Pages:\n\n- animationType: \"Linear\"\n- speed: {0,1}\n- speedVariance: {0,2}\n\nThe subviews of the Page will perform a linear animation adding speed to the upfront elements depending on speedVariance.\nSo if we have 3 subviews, the speed of each view will be:\n\n- view 0 {0,1+2}\n- view 1 {0,1+2+2}\n- view 2 {0,1+2+2+2}\n\ncreating the ~~infamous~~ parallax effect.\n\n### Exclude Views from automatic animations\nYou might need to avoid animations for some specific subviews.To stop those views to be part of the automatic BWWalkthrough animations you can just specify a list of views’ tags that you don’t want to animate. The Inspectable property `staticTags` (available from version ~> 0.6) accepts a `String` where you can list these tags separated by comma (“1,3,9”). The views indicated by those tags are now excluded from the automatic animations.\n\n## Custom Animations\nEach page of the walkthrough receives information about its normalized offset position implementing the protocol **BWWalkthroughPage**, so you can extend the prebuilt animations adding your super-custom-shiny-woah™ animations depending on this value (here is a simple example)\n```swift\nfunc walkthroughDidScroll(position: CGFloat, offset: CGFloat) {\n    var tr = CATransform3DIdentity\n    tr.m34 = -1\u002F500.0\n    titleLabel?.layer.transform = CATransform3DRotate(tr, CGFloat(M_PI)*2 * (1.0 - offset), 1, 1, 1)\n}\n```\n\n## Delegate\nThe **BWWalkthroughViewControllerDelegate** protocol defines some useful methods that you can implement to get more control over the Walkthrough flow.\n```swift\n@objc protocol BWWalkthroughViewControllerDelegate {\n        @objc optional func walkthroughCloseButtonPressed()\n        @objc optional func walkthroughNextButtonPressed()\n        @objc optional func walkthroughPrevButtonPressed()\n        @objc optional func walkthroughPageDidChange(pageNumber:Int)\n}\n```\n","BWWalkthrough 是一个用于 iOS 应用的自定义引导页构建库。其核心功能在于提供了一个灵活的设计框架，允许开发者完全自由地设计页面样式，并且自带一组预设动画效果，这些效果可以轻松替换为自定义动画。该库由两个主要类组成：`BWWalkthroughViewController` 作为容器管理整个引导流程及共享 UI 元素；`BWWalkthroughPageViewController` 则负责每个单独页面的内容展示。BWWalkthrough 适用于需要高度定制化引导页而不希望受限于固定模板的应用场景中，如新用户入门教程或功能介绍等。",2,"2026-06-11 03:10:24","top_language"]