blob: ed7c2786caae5068baed47e454845fb2726f52d2 [file] [log] [blame]
{
"name": "SizeClasser",
"version": "0.0.1",
"summary": "Device specific UITraitCollection helper with split view detection for iOS.",
"description": "SizeClasser\n===\n\nDevice specific `UITraitCollection` helper with split view detection for iOS.\n\nDemo\n----\n\n![alt tag](https://github.com/cemolcay/SizeClasser/blob/master/Examples/demo.gif?raw=true)\n\nRequirements\n----\n\n- Swift 3.0+\n- iOS 8.0+\n\nInstall\n----\n\n```\nuse_frameworks!\npod 'SizeClasser'\n```\n\nUsage\n----\n\n[`SizeClasser`](https://github.com/cemolcay/SizeClasser/SizeClasser/SizeClasser.swift) is an `OptionSet` type struct.\nYou can initilize it with your viewController's `traitCollection` property to identify your current device specific orientation and split view status.\n\n```\n/// Screen height is bigger than width. Portrait mode in all devices.\npublic static let portrait = SizeClasser(rawValue: 1 << 0)\n/// Screen width is bigger than height. Landscape mode in all devices.\npublic static let landscape = SizeClasser(rawValue: 1 << 1)\n/// Portrait mode for iPhone devices.\npublic static let iPhonePortrait = SizeClasser(rawValue: 1 << 2)\n/// Landscape mode for iPhone devices.\npublic static let iPhoneLandscape = SizeClasser(rawValue: 1 << 3)\n/// Portrait mode for iPad devices.\npublic static let iPadPortrait = SizeClasser(rawValue: 1 << 4)\n/// Landscape mode for iPad devices.\npublic static let iPadLandscape = SizeClasser(rawValue: 1 << 5)\n/// Split mode 1/3 of visible area in iPad devices.\npublic static let iPadSplitOneThird = SizeClasser(rawValue: 1 << 8)\n/// Split mode 1/2 of visible area in iPad devices.\npublic static let iPadSplitHalf = SizeClasser(rawValue: 1 << 9)\n/// Split mode 2/3 of visible area in iPad devices.\npublic static let iPadSplitTwoThird = SizeClasser(rawValue: 1 << 10)\n```\n\nFor example, if you want to detect iPad split view 1/3 on landscape orientation, simply:\n\n```\nguard let trait = SizeClasser(traitCollection: traitCollection ?? super.traitCollection) else { return }\nif trait.contains([.iPadLandscape, .iPadSplitOneThird]) {\n// You are on iPad, landscape and 1/3 split view mode\nif SizeClasser.isiPadPro {\n// You are on 12.9\" iPad\n} else {\n// You are on regular iPad / iPad mini\n}\n}\n```\n\nAlso you can use `SizeClasser.isiPadPro` to detect 12.9\" iPad Pro if you want to layout your views more specificly.\n\n#### Note on `traitCollectionDidChange:previousTraitCollection` function:\nThis function only get called if `traitCollection` changes.\nIf you are on iPad, either portrait or landscape mode, it won't change 1/3 split view to 2/3 split view transitions.\niOS calculates them both `compact width regular height` mode.\nSo, I recommend to use `viewDidLayoutSubviews:` function to detect split view changes specificly.\n![alt tag](https://github.com/cemolcay/SizeClasser/blob/master/Examples/split.png?raw=true)",
"homepage": "https://github.com/cemolcay/SizeClasser",
"license": "MIT",
"authors": {
"cemolcay": "ccemolcay@gmail.com"
},
"social_media_url": "http://twitter.com/cemolcay",
"platforms": {
"ios": "8.0"
},
"source": {
"git": "https://github.com/cemolcay/SizeClasser.git",
"tag": "0.0.1"
},
"source_files": "SizeClasser/SizeClasser.swift",
"requires_arc": true,
"pushed_with_swift_version": "3.0"
}