LFTwitterProfile
[![CI Status](http://img.shields.io/travis/Roy Tang/LFTwitterProfile.svg?style=flat)](https://travis-ci.org/Roy Tang/LFTwitterProfile)
Twitter-like Profile viewController with very easy to use API
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
Installation
LFTwitterProfile is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "LFTwitterProfile"
Usage
Basic
Making your Twitter-like Profile viewController is as simple as extending TwitterProfileViewController
class MyProfileViewController: TwitterProfileViewController {
/* ... overrides ... */
}
Customization
TwitterProfileViewController
provides several handy APIs for customizing the interface:
| function | description
| --------------------| :---------------------|-----------:|
| numberOfSegments() -> Int
| override to return the number of segments (tabs) to be shown |
| segmentTitle(forSegment index: Int) -> String
| override to return the title for segments shown in UISegmentedControl |
| prepareForLayout()
| override to setup scrollViews, tableViews, etc, before they are returned in scrollView(forSegment index: Int)
|
| scrollView(forSegment index: Int) -> UIScrollView
| override to return UIScrollView (UITableView, UICollectionView, etc) in corresponding segment index |
| username: String
| user name displayed in profile header and navigation |
| profileImage: UIImage
| user icon |
| coverImage: UIImage
| cover image shown in sticky header |
| locationString: String
| location displayed under username |
| descriptionString: String
| content under location, dynamically sized, profileHeader will adjust it's height by the content from descriptionString |
UIScrollView, UITableView, UICollectionView, ...
LFTwitterProfile
allows you to use any child of UIScrollView
, essentially any child that will provide with correct contentSize
property, to be shown as a tab under UISegmentedControl
.
Switching between tabs is as smooth as if the native Twitter iOS app, scrolling states are managed automatically.
override func prepareForLayout() {
// TableViews should be initialized here
let _tweetTableView = UITableView(frame: CGRect.zero, style: .plain)
self.tweetTableView = _tweetTableView
let _photosTableView = UITableView(frame: CGRect.zero, style: .plain)
self.photosTableView = _photosTableView
let _favoritesTableView = UITableView(frame: CGRect.zero, style: .plain)
self.favoritesTableView = _favoritesTableView
self.setupTables() // setting up delegates and dataSources, register cells, etc....
}
override func scrollView(forSegment index: Int) -> UIScrollView {
switch index {
case 0:
return tweetTableView
case 1:
return photosTableView
case 2:
return favoritesTableView
default:
return tweetTableView
}
}
TODO
- More user interface customization
- Better documentation
- Renaming (right now is quite messy for pods and projects and classes, I changed my mind several times about the naming when working on this project)
Requirements
- Swift 3
- Xcode 8
CocoaPods Dependencies
Author
License
LFTwitterProfile is available under the MIT license. See the LICENSE file for more info.