All Projects → nsoojin → Baraba

nsoojin / Baraba

Licence: mit
Make your UIScrollView scroll automatically when user is looking 👀 by tracking face using ARKit and AVFoundation

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Baraba

Persei
Animated top menu for UITableView / UICollectionView / UIScrollView written in Swift
Stars: ✭ 3,395 (+1166.79%)
Mutual labels:  uicollectionview, uitableview, uiscrollview
Gskstretchyheaderview
A generic stretchy header for UITableView and UICollectionView
Stars: ✭ 1,624 (+505.97%)
Mutual labels:  uicollectionview, uitableview, uiscrollview
Mylinearlayout
MyLayout is a powerful iOS UI framework implemented by Objective-C. It integrates the functions with Android Layout,iOS AutoLayout,SizeClass, HTML CSS float and flexbox and bootstrap. So you can use LinearLayout,RelativeLayout,FrameLayout,TableLayout,FlowLayout,FloatLayout,PathLayout,GridLayout,LayoutSizeClass to build your App 自动布局 UIView UITab…
Stars: ✭ 4,152 (+1449.25%)
Mutual labels:  uicollectionview, uitableview, uiscrollview
XLRefresh
iOS 下拉刷新工具
Stars: ✭ 25 (-90.67%)
Mutual labels:  uitableview, uicollectionview, uiscrollview
Tysnapshotscroll
一句代码保存截图,将 UIScrollView UITableView UICollectionView UIWebView WKWebView 网页 保存 为 长图 查看。Save the scroll view page as an image,support UIScrollView,UITableView,UICollectionView,UIWebView,WKWebView.(Support iOS13)
Stars: ✭ 709 (+164.55%)
Mutual labels:  uicollectionview, uitableview, uiscrollview
Closures
Swifty closures for UIKit and Foundation
Stars: ✭ 1,720 (+541.79%)
Mutual labels:  uicollectionview, uitableview, uiscrollview
ScrollAnimationShowcase
[ING] - UIScrollViewやUICollectionViewの特性を活用した表現サンプル
Stars: ✭ 15 (-94.4%)
Mutual labels:  uicollectionview, uiscrollview
IQListKit
Model driven UITableView/UICollectionView
Stars: ✭ 51 (-80.97%)
Mutual labels:  uitableview, uicollectionview
HDEmptyView
一个Swift语言封装的EmptyView显示库,可作用于WKWebView、UITableView、UICollectionView 无网络提醒或者空数据提醒
Stars: ✭ 29 (-89.18%)
Mutual labels:  uitableview, uicollectionview
TinyCoordinator
The Swift version of ThinningCoordinator focus on lighter view controllers.
Stars: ✭ 18 (-93.28%)
Mutual labels:  uitableview, uicollectionview
Tabanimated
A skeleton screen framework based on native for iOS. (一个由iOS原生组件映射出骨架屏的框架,包含快速植入,低耦合,兼容复杂视图等特点,提供国内主流骨架屏动画的加载方案,同时支持上拉加载更多、自定制动画。)
Stars: ✭ 2,909 (+985.45%)
Mutual labels:  uicollectionview, uitableview
PagedLists
Paginated UITableView and UICollectionViews for iOS.
Stars: ✭ 69 (-74.25%)
Mutual labels:  uitableview, uicollectionview
iOSEasyList
A data-driven UICollectionView and UITableView framework for building fast and flexible lists
Stars: ✭ 29 (-89.18%)
Mutual labels:  uitableview, uicollectionview
Nextlevel
NextLevel was initally a weekend project that has now grown into a open community of camera platform enthusists. The software provides foundational components for managing media recording, camera interface customization, gestural interaction customization, and image streaming on iOS. The same capabilities can also be found in apps such as Snapchat, Instagram, and Vine.
Stars: ✭ 1,940 (+623.88%)
Mutual labels:  avfoundation, arkit
Arplayer
Playback videos using ARKit and AVFoundation.
Stars: ✭ 117 (-56.34%)
Mutual labels:  avfoundation, arkit
Cyanic
Declarative, state-driven UI framework
Stars: ✭ 32 (-88.06%)
Mutual labels:  uitableview, uicollectionview
Squaremosaiclayout
An extandable mosaic UICollectionViewLayout with a focus on extremely flexible customizations 🔶
Stars: ✭ 243 (-9.33%)
Mutual labels:  uicollectionview, uitableview
2DUICollectionViewSwift
A simple and elegant 2Dimensional UICollectionView which is most commonly used in ecommerce apps, music streaming apps etc. Easily customisable as per your requirements as it is designed keeping the superset requirement in mind. Developed in latest Swift syntax.
Stars: ✭ 28 (-89.55%)
Mutual labels:  uicollectionview, uiscrollview
WBListKit
A data-driven UICollectionView&UITableView framework for building fast and flexible lists by declarative syntax.
Stars: ✭ 32 (-88.06%)
Mutual labels:  uitableview, uicollectionview
ios ui recipe showcase
iOSアプリ開発 - UI実装であると嬉しいレシピブック掲載サンプル
Stars: ✭ 54 (-79.85%)
Mutual labels:  uitableview, uicollectionview

Baraba

from Korean:

meaning, Look at me

Swift 5.0 Version Platform Carthage Compatible

Make your UIScrollView scroll automatically when user is looking at the screen 👀

Features

  • [x] Automatic scrolling for your UIScrollView when user is looking at the screen📱👀
  • [x] Pauses scrolling when user turns away📱🙄 or when starts scrolling 👆
  • [x] Face Tracking using ARKit or AVFoundation (Your choice!)
  • [x] Adjust scrolling speed appropriate for your content
  • [x] Complete Documentation
  • [x] Supports iOS 11 or above

Demo

Click below image 👉 YouTube

Baraba Demo

Installation

CocoaPods

Baraba is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Baraba'

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate Baraba into your Xcode project using Carthage, specify it in your Cartfile:

github "nsoojin/baraba"

Run carthage update to build the framework and drag the built Baraba.framework into your Xcode project.

Example

The example application is the best way to see Baraba in action. Simply open the Baraba.xcodeproj and run the Example scheme.

Basic Usage

Just three simple lines of code to get it running!

// Probably in your view controller.
let baraba = Baraba(configuration: .automatic) // (1) Initialize Baraba

override func viewDidLoad() {
    super.viewDidLoad()
    
    baraba.scrollView = tableView // (2) Set the scroll view for the auto-scroll target
    baraba.delegate = self
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    
    baraba.resume() // (3) Resume to activate camera and start tracking user's face
}

override func viewWillDisppear(_ animated: Bool) {
    super.viewWillDisppear(animated)
    
    baraba.pause() // Pause to stop accessing camera
}

Configuration

let baraba = Baraba(configuration: .automatic) // Uses ARKit if supported. If not, uses AVFoundation
let baraba = Baraba(configuration: .ar)
let baraba = Baraba(configuration: .av)

Baraba.isConfigurationSupported(.ar) // Check the device availability

What's the difference?

ARKit uses TrueDepth front camera. Not all iOS devices supports this, so refer to device compatibility. Generally, ARKit has faster face tracking capability so reacts faster to user movement. However, it consumes more energy and may increase the device temperature when used for a long time. The best way to see the difference is to run it for youself. Try the Example app.

Scroll Speed

You can adjust scroll speed with preferredScrollSpeed property, which represents speed in 'points per second'. However, the actual scroll speed will be the nearest multiple of 60. The reason is for smooth scrolling, as the device's maximum refresh rate of the display is 60 frames per second. You can check the actual speed with actualScrollSpeed property if you want. Default is 180.

baraba.preferredScrollSpeed = 240 // baraba.actualScrollSpeed == 240 
baraba.preferredScrollSpeed = 100 // baraba.actualScrollSpeed == 120

Pause Duration

When user starts dragging the scroll view, auto-scrolling pauses. After the dragging finishes, auto-scrolling resumes after this duration.

baraba.pauseDuration = 4

⚠️ Important

If you want to use BarabaConfiguration.ar which uses ARFaceTrackingConfiguration, your app must include a privacy policy describing to users how you intend to use face tracking and face data. (See Apple's Note)

Example #1 (This has passed the actual App Store Review.)

You can use this sample at your own discretion.

Don't forget to add Privacy - Camera Usage Description in your app's info.plist file.

FAQ

What's the origin of the name Baraba?

Baraba(바라봐) is a Korean term which means "Look at me".

Contributing

Contributions are very welcome 🙌

License

Baraba is released under the MIT license. See LICENCE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].