Set button images
MODIFY
frontend/ios/DroidKaigi 2019.xcodeproj/project.pbxproj
frontend/ios/DroidKaigi 2019.xcodeproj/project.pbxproj
3672C2DF21F73A9400ACB910 /* SpeakerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3672C2DE21F73A9400ACB910 /* SpeakerCell.swift */; };
36D1FA2721F5CF6600ADBBDE /* StoryboardInstantiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36D1FA2621F5CF6600ADBBDE /* StoryboardInstantiable.swift */; };
43DC80C12200A0F600A3F710 /* FavoriteRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DC80C02200A0F600A3F710 /* FavoriteRepository.swift */; };
+ 43DC80C72201FC8100A3F710 /* UIButton+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DC80C62201FC8100A3F710 /* UIButton+Extension.swift */; };
5917BCA621FA19B8005BEAF2 /* SessionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5917BCA521FA19B8005BEAF2 /* SessionHeaderView.swift */; };
59D30FC921F8B1BD003A937C /* SessionByStartTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59D30FC821F8B1BD003A937C /* SessionByStartTime.swift */; };
63F34E1B21EB43CE00B2EC48 /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63F34E1A21EB43CE00B2EC48 /* SessionRepository.swift */; };
3672C2DE21F73A9400ACB910 /* SpeakerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpeakerCell.swift; sourceTree = "<group>"; };
36D1FA2621F5CF6600ADBBDE /* StoryboardInstantiable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryboardInstantiable.swift; sourceTree = "<group>"; };
43DC80C02200A0F600A3F710 /* FavoriteRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteRepository.swift; sourceTree = "<group>"; };
+ 43DC80C62201FC8100A3F710 /* UIButton+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+Extension.swift"; sourceTree = "<group>"; };
5917BCA521FA19B8005BEAF2 /* SessionHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionHeaderView.swift; sourceTree = "<group>"; };
59D30FC821F8B1BD003A937C /* SessionByStartTime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionByStartTime.swift; sourceTree = "<group>"; };
63F34E1A21EB43CE00B2EC48 /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionRepository.swift; sourceTree = "<group>"; };
3672C2CA21F601D600ACB910 /* UITableView+Extension.swift */,
366B060A21F7604400C912AD /* UICollectionView+Extension.swift */,
363E6AF521FD545B00EBC698 /* Session+Extension.swift */,
+ 43DC80C62201FC8100A3F710 /* UIButton+Extension.swift */,
);
path = Extensions;
sourceTree = "<group>";
63F34E1B21EB43CE00B2EC48 /* SessionRepository.swift in Sources */,
59D30FC921F8B1BD003A937C /* SessionByStartTime.swift in Sources */,
362546CD21FCD4FF005ADB0F /* SessionDetailSectionFooterView.swift in Sources */,
+ 43DC80C72201FC8100A3F710 /* UIButton+Extension.swift in Sources */,
3672C2D321F6FB7E00ACB910 /* SessionDataSource.swift in Sources */,
362546C921FC9DCD005ADB0F /* SessionDetailWithIconTableViewCell.swift in Sources */,
366B060721F751C400C912AD /* TagsLeftAlignedCollectionViewFlowLayout.swift in Sources */,

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/Contents.json
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "ic_bookmark_48pt.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_bookmark_48pt_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_bookmark_48pt_3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt.png
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt.png
Binary files /dev/null and b/frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt.png differ

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt_2x.png
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt_2x.png
Binary files /dev/null and b/frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt_2x.png differ

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt_3x.png
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt_3x.png
Binary files /dev/null and b/frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark.imageset/ic_bookmark_48pt_3x.png differ

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/Contents.json
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "ic_bookmark_border_48pt.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_bookmark_border_48pt_2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "ic_bookmark_border_48pt_3x.png",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt.png
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt.png
Binary files /dev/null and b/frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt.png differ

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt_2x.png
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt_2x.png
Binary files /dev/null and b/frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt_2x.png differ

ADD
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt_3x.png
frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt_3x.png
Binary files /dev/null and b/frontend/ios/DroidKaigi 2019/Assets.xcassets/bookmark_border.imageset/ic_bookmark_border_48pt_3x.png differ

ADD
frontend/ios/DroidKaigi 2019/Extensions/UIButton+Extension.swift
+//
+// UIButton+Extension.swift
+// DroidKaigi 2019
+//
+// Created by woxtu on 2019/01/31.
+//
+
+import UIKit
+
+extension UIButton {
+ func setImageTintColor(color: UIColor, for state: UIControl.State) {
+ if let image = image(for: state) {
+ setImage(applyTintColor(color: color, to: image), for: state)
+ }
+ }
+
+ private func applyTintColor(color: UIColor, to image: UIImage) -> UIImage? {
+ UIGraphicsBeginImageContextWithOptions(image.size, false, UIScreen.main.scale)
+
+ guard let context = UIGraphicsGetCurrentContext() else {
+ return image
+ }
+
+ let rect = CGRect(origin: .zero, size: image.size)
+
+ context.translateBy(x: 0, y: image.size.height)
+ context.scaleBy(x: 1, y: -1)
+
+ if let image = image.cgImage {
+ context.setBlendMode(.normal)
+ context.draw(image, in: rect)
+ }
+
+ context.setBlendMode(.sourceIn)
+ context.setFillColor(color.cgColor)
+ context.fill(rect)
+
+ let image = UIGraphicsGetImageFromCurrentImageContext()
+ UIGraphicsEndImageContext()
+ return image
+ }
+}

Set button images