{"id":15625832,"url":"https://github.com/timoliver/tosplitviewcontroller","last_synced_at":"2025-04-28T15:55:01.426Z","repository":{"id":56923093,"uuid":"85023897","full_name":"TimOliver/TOSplitViewController","owner":"TimOliver","description":"A split view controller that can display up to three view controllers at once.","archived":false,"fork":false,"pushed_at":"2020-05-09T17:59:56.000Z","size":909,"stargazers_count":59,"open_issues_count":3,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-28T15:54:55.516Z","etag":null,"topics":["cocoapods","objective-c","split","uiviewcontroller"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TimOliver.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"timoliver","custom":"https://tim.dev/paypal"}},"created_at":"2017-03-15T03:16:10.000Z","updated_at":"2024-10-12T12:15:18.000Z","dependencies_parsed_at":"2022-08-21T05:20:25.477Z","dependency_job_id":null,"html_url":"https://github.com/TimOliver/TOSplitViewController","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimOliver%2FTOSplitViewController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimOliver%2FTOSplitViewController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimOliver%2FTOSplitViewController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimOliver%2FTOSplitViewController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TimOliver","download_url":"https://codeload.github.com/TimOliver/TOSplitViewController/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251342718,"owners_count":21574243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cocoapods","objective-c","split","uiviewcontroller"],"created_at":"2024-10-03T10:06:07.666Z","updated_at":"2025-04-28T15:55:01.407Z","avatar_url":"https://github.com/TimOliver.png","language":"Objective-C","readme":"# TOSplitViewController\n\u003e A split view controller that can display up to three view controllers on the same screen.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/timoliver/tosplitviewcontroller/master/screenshot.jpg\" style=\"margin:0 auto\" /\u003e\n\u003c/p\u003e\n\n[![Beerpay](https://beerpay.io/TimOliver/TOSplitViewController/badge.svg?style=flat)](https://beerpay.io/TimOliver/TOSplitViewController)\n[![PayPal](https://img.shields.io/badge/paypal-donate-blue.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=M4RKULAVKV7K8)\n\n`TOSplitViewController` is a very 'light' re-implementation of `UISplitViewController`. It behaves like `UISplitViewController` for the most part, but is capable of showing up to 3 columns on some of the larger screens such as the 12.9\" iPad Pro, or a regular iPad in landscape orientation.\n\n# Features\n* Can display 1 to 3 view controllers on screen at the same time depending on the size of the device screen at the time.\n* Handles dynamically collapsing view controllers in separate columns into each other when the screen size changes.\n* Plays an elegant transition animation when device rotations require the number of columns to change.\n* Exposes as much functionality as possible through delegate methods, and `UIViewController` categories to allow subclasses to override this behaviour.\n\n# Code\nDue to the way split view controllers work, it's necessary to create all view controllers ahead of time since a split view controller can be presented collapsed, but then expand at a later time:\n\n```objc\n#import \"TOCropViewController.h\"\n\nPrimaryViewController *mainController = [[PrimaryViewController alloc] initWithStyle:UITableViewStyleGrouped];\nUINavigationController *primaryNavController = [[UINavigationController alloc] initWithRootViewController:mainController];\n\nSecondaryViewController *secondaryController = [[SecondaryViewController alloc] init];\nUINavigationController *secondaryNavController = [[UINavigationController alloc] initWithRootViewController:secondaryController];\n\nDetailViewController *detailController = [[DetailViewController alloc] init];\nUINavigationController *detailNavController = [[UINavigationController alloc] initWithRootViewController:detailController];\n\nNSArray *controllers = @[primaryNavController, secondaryNavController, detailNavController];\nTOSplitViewController *splitViewController = [[TOSplitViewController alloc] initWithViewControllers:controllers];\nsplitViewController.delegate = self;\n```\n\n# Installation\n\n## Manual Installation\n\nDownload this repository from GitHub and extract the zip file. In the extracted folder, import the folder name `TOSplitViewController` into your Xcode project. Make sure 'Copy items if needed` is checked to ensure it is properly copied to your project.\n\n## CocoaPods\n\n[CocoaPods](https://cocoapods.org) is a dependency manager that makes it much easier to integrate and subsequently update third party libraries in your app's codebase.\n\nTo integrate `TOSplitViewController`, simply add the following to your podfile:\n\n```\npod 'TOSplitViewController'\n```\n\n## Carthage\n\nCarthage support isn't offered at this time. Please feel free to file a PR. :)\n\n# Why Build This?\n\niPad screen sizes drastically increased with the launch of the 12.9\" iPad Pro. Apple took advantage of this by adding 3 column modes to some of iOS' system apps, including Mail and Notes, however this API wasn't made public to third party developers.\n\nI have a design need for a three column display in one of my upcoming projects, and so I decided it would be worth the time and development resources to create this library.\n\nIt's still very much in its infancy, and the complexity required to managed 3 columns at once means there may still be plenty of bugs in it, so bug reports (And more importantly pull requests) are warmly welcomed. :)\n\n# Credits\n\n`TOSplitViewController` was developed by [Tim Oliver](http://twitter.com/TimOliverAU).\n\niPad Air 2 perspective mockup by [Pixeden](http://pixeden.com).\n\n# License\n\n`TOSplitViewController` is available under the MIT license. Please see the [LICENSE](LICENSE) file for more information. ![analytics](https://ga-beacon.appspot.com/UA-5643664-16/TOSplitViewController/README.md?pixel)\n","funding_links":["https://github.com/sponsors/timoliver","https://tim.dev/paypal","https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=M4RKULAVKV7K8"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimoliver%2Ftosplitviewcontroller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimoliver%2Ftosplitviewcontroller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimoliver%2Ftosplitviewcontroller/lists"}