blending culture in twitter client
TRANSCRIPT
![Page 1: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/1.jpg)
![Page 2: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/2.jpg)
![Page 3: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/3.jpg)
![Page 4: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/4.jpg)
![Page 5: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/5.jpg)
![Page 6: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/6.jpg)
![Page 7: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/7.jpg)
![Page 8: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/8.jpg)
![Page 9: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/9.jpg)
![Page 10: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/10.jpg)
![Page 11: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/11.jpg)
![Page 12: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/12.jpg)
![Page 13: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/13.jpg)
![Page 14: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/14.jpg)
![Page 15: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/15.jpg)
![Page 16: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/16.jpg)
![Page 17: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/17.jpg)
![Page 18: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/18.jpg)
![Page 19: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/19.jpg)
![Page 20: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/20.jpg)
![Page 21: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/21.jpg)
![Page 22: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/22.jpg)
![Page 23: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/23.jpg)
class TimelineTableViewController: UITableViewController {
var tweets: [Tweet] = []
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tweets.count }
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { return UITableViewCell() }
}
![Page 24: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/24.jpg)
class TimelineTableViewController: UITableViewController { private let timelineDataSource = TimelineDataSource() private let timelineDelegate = TimelineDelegate()
override func viewDidLoad() { tableView.dataSource = timelineDataSource tableView.delegate = timelineDelegate }
![Page 25: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/25.jpg)
class TimelineDataSource: NSObject, UITableViewDataSource { var tweets: [Tweet] = [] func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tweets.count }
![Page 26: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/26.jpg)
import UIKit
class KobitoSettingViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, KobitoCollectionViewCellDelegate { var delegate: BackDelegate? @IBOutlet weak var kobitoMediumImageView: UIImageView! @IBOutlet weak var kobitoNameLabel: UILabel! @IBOutlet weak var collectionView: UICollectionView! @IBOutlet weak var backButton: UIButton! @IBOutlet weak var gotchaButton: UIButton! var isShowedKobitoDetailView = false var currentSelectedIndex: Int { return KobitoManager.sharedManager.currentKobito.type.rawValue } override func viewDidLoad() { backButton.imageView?.contentMode = .ScaleAspectFit gotchaButton.imageView?.contentMode = .ScaleAspectFit kobitoMediumImageView.image = KobitoManager.sharedManager.currentKobito.type.miniImage kobitoNameLabel.text = KobitoManager.sharedManager.currentKobito.type.name automaticallyAdjustsScrollViewInsets = false var cellSide:CGFloat = 0 var lrMargin:CGFloat = 0 var tbMargin:CGFloat = 0 // これはした方がいいかも. if collectionView.frame.height/2 < collectionView.frame.width/3 { tbMargin = 4 cellSide = (collectionView.frame.size.height - (tbMargin * 4)) / 2 lrMargin = (collectionView.frame.size.width - (cellSide * 3)) / 6 }else { lrMargin = 2 cellSide = (collectionView.frame.size.width - (lrMargin * 6)) / 3 tbMargin = (collectionView.frame.size.height - (cellSide * 2)) / 4 } let layout = UICollectionViewFlowLayout() layout.itemSize = CGSize(width: cellSide, height: cellSide) layout.sectionInset = UIEdgeInsets(top: tbMargin, left: lrMargin, bottom: tbMargin, right: lrMargin) collectionView.collectionViewLayout = layout collectionView.delegate = self collectionView.dataSource = self } override func viewDidAppear(animated: Bool) { showCurrentSelectedMark() } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat { return 12 } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat { return 0 } func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 6 } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
![Page 27: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/27.jpg)
![Page 28: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/28.jpg)
![Page 29: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/29.jpg)
![Page 30: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/30.jpg)
![Page 31: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/31.jpg)
![Page 32: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/32.jpg)
class Timeline { private var tweets: [Tweet] = [] init(tweets: [Tweet]) { self.tweets = tweets } var numberOfTweet: Int { return tweets.count } subscript(index: Int) -> Tweet { return tweets[index] } private func insertTweetAtIndex(tweet: Tweet, index: Int) { tweets.insert(tweet, atIndex: index) }
![Page 33: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/33.jpg)
class TimelineDataSource: NSObject, UITableViewDataSource { var timeline: Timeline = Timeline(tweets: []) func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return timeline.numberOfTweet }
![Page 34: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/34.jpg)
![Page 35: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/35.jpg)
![Page 36: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/36.jpg)
struct Timeline { private var tweets: [Tweet] = [] init(tweets: [Tweet]) { self.tweets = tweets } var numberOfTweet: Int { return tweets.count } subscript(index: Int) -> Tweet { return tweets[index] }
![Page 37: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/37.jpg)
private func insertTweetAtIndex(tweet: Tweet, index: Int) -> Timeline { var mutableTweets = tweets mutableTweets.insert(tweet, atIndex: index) return Timeline(tweets: mutableTweets) }
![Page 38: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/38.jpg)
func favoriteTweetAtIndex(index: Int) -> Timeline { let cacheTweet = items[index] let tweet = Tweet( id: cacheTweet.id, text: cacheTweet.text, favorited: !cacheTweet.favorited, retweeted: cacheTweet.retweeted, user: cacheTweet.user) return deleteItemAtIndex(index).insertItemAtIndex(tweet, index: index) }
![Page 39: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/39.jpg)
![Page 40: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/40.jpg)
![Page 41: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/41.jpg)
private func insertTweetAtIndex(tweet: Tweet, index: Int) -> Timeline { var mutableTweets = tweets mutableTweets.insert(tweet, atIndex: index) return Timeline(tweets: mutableTweets) }
![Page 42: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/42.jpg)
private func insertItemAtIndex(item: Item, index: Int) -> Timeline { var mutableItems = Items mutableItems.insert(item, atIndex: index) return Timeline(tweets: mutableItems) }
![Page 43: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/43.jpg)
protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
![Page 44: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/44.jpg)
protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
![Page 45: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/45.jpg)
protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
![Page 46: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/46.jpg)
protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
![Page 47: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/47.jpg)
struct Timeline: DataType { typealias ItemType = Tweet var items: [ItemType] = [] init(items: [ItemType]) { self.items = items } var numberOfItems: Int { return items.count } subscript(index: Int) -> Tweet { return items[index] } func insertItemAtIndex(item: ItemType, index: Int) -> Timeline { var mutableItems = items mutableItems.insert(item, atIndex: index) return Timeline(items: mutableItems) }
![Page 48: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/48.jpg)
func favoriteTweetAtIndex(index: Int) -> Timeline { let cacheTweet = items[index] let tweet = Tweet( id: cacheTweet.id, text: cacheTweet.text, favorited: !cacheTweet.favorited, retweeted: cacheTweet.retweeted, user: cacheTweet.user) return deleteItemAtIndex(index).insertItemAtIndex(tweet, index: index) }
![Page 49: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/49.jpg)
![Page 50: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/50.jpg)
![Page 51: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/51.jpg)
![Page 52: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/52.jpg)
![Page 53: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/53.jpg)
![Page 54: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/54.jpg)
![Page 55: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/55.jpg)
_人人人人人人_ > xcode圧力 < ‾Y^Y^Y^Y^Y‾
![Page 56: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/56.jpg)
![Page 57: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/57.jpg)
![Page 58: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/58.jpg)
💪
![Page 59: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/59.jpg)
![Page 60: Blending Culture in Twitter Client](https://reader033.vdocuments.us/reader033/viewer/2022051709/587110971a28abac6d8b5a81/html5/thumbnails/60.jpg)