Chắc bạn cũng quen thuộc với một số các thư viện mã nguồn mở trên CocoaPods như Alamofire hoặc MBProgessHUD. Nhưng đôi khi bạn không thể tìm thấy một thư viện có những chức năng mà bạn đang cần, hoặc bạn muốn chia nhỏ một project lớn ra để sau này có thể tái sử dụng lại các chức năng thì việc tạo một CocoaPods là một sự lựa chọn tốt.
Cũng may việc tạo CocoaPods khá đơn giản.
Nếu bạn chưa sử dụng CocoaPods thì bạn cần tìm hiểu kỹ trước khi đọc bài này.
Bạn có thể download project sau đó mở file IceCreamShop.xcworkspace/IceCreamShop /Views/Storybpards & Nibs/ Main.storyboard.
Khái quát qua về view này:
PickFlavorViewController: Sử lý tương tác người dùng, ví dụ như khi người dùng chọn một loại kem yêu thích.
PickFlavorDataSource: Là dữ liệu để đưa lên hiển thị colletion view.
IceCreamView: Custom view hiển thị một loại kem với kiểu là Flavor.
ScoopCell: Custom collectionview cell nó chưa một ScoopView nó cũng sử dụng một instance của class Flavor để hiển thị.
Tạo mới một dự án Xcode iOS/Framework & Library/Cocoa Touch Framework/Next
Đặt tên là RWPickFlavor chọn ngôn ngữ là Swift và chọn Next.
Bình thường khi bạn sử dụng CocoaPods, bạn sử dụng thư viện CocoaPods giống như sau:
pod 'PodName', '~> 1.0'
Nhưng khi bạn tự viết CocoaPod thì bạn thay đường dẫn đến thư viện của bạn như sau:
pod 'MyPodName', :path => '~/Path/To/Folder/Containing/My/Pod'
Nó sử dụng file cục bộ trên thiết bị của bạn hay vì việc phải tìm kiếm trên kho lưu trữ ở Internet.
Khi bạn sử dụng một pod, bạn không nên thay đổi bất kỳ các lớp vì nó sẽ bị ghi đè lại khi bạn ghi lại khi bạn sử dụng lại lệnh pod install. Vì vậy khi bạn sử dụng cú pháp “:path” thì CocoaPod sẽ tìm theo đường dẫn cục bộ nên tất cả những thay đổi của bạn sẽ không bị ghi đè lại.
Bạn nên để thư viện bạn tạo vào Documents/Libraries. Vì nếu bạn làm việc nhóm thì có nhiều người cùng sử dụng, CocoaPods tự động thêm dấu “~” như là như mục home của người dùng.
Cũng giống như khi bạn sử dụng bất kỳ một thư viện nào với CocoaPods bạn cũng sẽ phải tạo một Pod file. Vậy khi chúng ta tự viết một thư viện thì cũng vậy:
cd ~/Documents/Libraries/RWPickFlavor
pod init
open -a Xcode Podfile
Sau đó bạn mở Podfile và thay đổi toàn bộ nội dung như sau:
platform :ios, '8.0'
use_frameworks!
target 'RWPickFlavor' do
pod 'Alamofire', '~> 2.0'
pod 'MBProgressHUD', '~> 0.9.0'
end
Sau đó tắt đi và bật Terminal. Gõ đoạn mã sau để cài đặt Alamofire và MBProgressHUD.
pod install
Sau khi quá trình cài đặt thì bạn sẽ thấy RWPickFlavor.xcworkspace
Nếu trong quá trình cài đặt có bất kỳ cảnh báo nào thì có thể bạn đang sử dụng phiên bản cũ của CocoaPods. Kiểm tra version bằng cách:
pod --version
Để cài đặt lại CocoaPods:
sudo gem install CocoaPods
Tiếp theo ở thư mục dự án bạn mở RWPickFlavor.xcworkspace
open RWPickflavor.xcworkspace
Bên thanh điều thướng bên trái giống như sau:
Bây giờ bạn cần copy vài files từ IceCreamShop vào RWPickFlavor:
· Categories
· Controllers
· Factories
· Models
· Views
· Ice Cream
· Storyboards & Nibs
Khi bạn kéo vào thì nó sẽ hiện lên hộp thoại thì bạn nhớ chọn Copy items if needed.
Sau khi kéo xong thì:
Bạn hãy xoá các files dưới đây nếu kéo nhầm:
· AppDelegate.swift
· LaunchScreen.xib
· Images.xcassets
Ở file Infoist nếu có dòng Main storyboard file base name thì xoá đi.
Bạn vào IceCreamShop/images.xcassets chuột phải vào background và chọn Show In Finder. Tiếp theo kéo background.jpg vào RWPickFlavor.
Thay đổi file ảnh thành background.jpg.
Hầu như các thư viện tốt nhất hiện nay đều trên kho lưu trữ Git bạn có thể sử dụng Git để lưu trữ thư viện của bạn. Ngoài ra có thể sử dụng Bitbucket.
Ví dụ này sử dụng GitHub.
Đầu tiên đăng ký và đăng nhập tài khoản GitHub.
Ấn dấu “+” -> chọn New repository
Đặt tên RWPickFlavor -> Create repository.
GitHub sẽ tạo một kho lưu trữ. Tiếp theo bạn sẽ thấy màn hình như sau:
Bạn cần lấy URL(như là địa chỉ của kho lưu trữ). Bây giờ bạn cần một cái kho lưu trữ khác để làm host cho tất các yêu cầu của Pod.
Mở github.com bạn tạo thêm một kho lưu trữ mới như trên với tên là RWPodSpecs..
Bây giờ bạn cần tạo file RWPickFlavor.podspec cho RWPickFlavor, file podspect bao gồm tên, phiên bản và đường dẫn download từ git.
Thêm các đoạn mã dưới đây
cd ~/Documents/Libraries/RWPickFlavor
pod spec create RWPickFlavor
open -a Xcode RWPickFlavor.podspec
Sau khi tạo được file spec thì nó sẽ mở file spec và chúng ta sẽ thay toàn bộ nội dung như sau:
Pod::Spec.new do |s|
# 1
satform = :ios
s.ios.deployment_target = '8.0'
s.name = "RWPickFlavor"
s.summary = "RWPickFlavor lets a user select an ice cream flavor."
s.requires_arc = true
# 2
s.version = "0.1.0"
# 3
s.license = { :type => "MIT", :file => "LICENSE" }
# 4 - Replace with your name and e-mail address
s.author = { "[Your Name Goes Here]" => "[Your_Email@Your_Email_Domain.com]" }
# For example,
# s.author = { "Joshua Greene" => "jrg.developer@gmail.com" }
# 5 - Replace this URL with your own Github page's URL (from the address bar)
s.homepage = "[Your RWPickFlavor Homepage URL Goes Here]"
# For example,
# s.homepage = "https://github.com/JRG-Developer/RWPickFlavor"
# 6 - Replace this URL with your own Git URL from "Quick Setup"
s.source = { :git => "[Your RWPickFlavor Git URL Goes Here]", :tag => "#{s.version}"}
# For example,
# s.source = { :git => "https://github.com/JRG-Developer/RWPickFlavor.git", :tag => "#{s.version}"}
# 7
s.framework = "UIKit"
s.dependency 'Alamofire', '~> 2.0'
s.dependency 'MBProgressHUD', '~> 0.9.0'
# 8
s.source_files = "RWPickFlavor/**/*.{swift}"
# 9
s.resources = "RWPickFlavor/**/*.{png,jpeg,jpg,storyboard,xib}"
end
Cũng giống như Podfile, podspec được viết trong Ruby.
Giải thích các bước:
Cũng giống như các pod khác, bạn cần tạo file LICENSE
Chỉ cần copy và paste MIT license ở đây vào trong phần text editor, và sau đó lưu lại là “LICENSE” nhớ là không có phần mở rộng và để trong ~/Domuments/Libraries/RWPickFlavor, và thay đổi năm và tên cho đúng.
Choose a License là một web site tốt giúp bạn chọn lisence thích hợp cho dự án.
Làm theo các đoạn mã sau ở Terminal, thay thế [Your RWPickFlavor Git URL] bằng đường dẫn git bạn tạo ở trên:
cd ~/Documents/Libraries/RWPickFlavor
git init
git add .
git commit -m "Initial commit"
git tag 0.1.0
git remote add origin [Your RWPickFlavor Git URL]
git push -u origin master --tags
Nếu có hộp thoại hiện lên thì hãy điền tài khoản và mật khảu của github.
Đó là cách đẩy toàn bộ các files trong RWPickFlavor với tag là 0.1.0 lên GitHub.
Mở Podfile của IceCreamShop và thay đổi nội dung như sau:
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'
source '[Your RWPodSpecs Git URL Goes Here]'
use_frameworks!
target 'IceCreamShop' do
pod 'RWPickFlavor', :path => '~/Documents/Libraries/RWPickFlavor'
end
Bạn cần chắc chấn thay [Your RWPodSpecs Git URL Goes Here] thành đường dẫn GitHub chứa RWPodSpecs.
Sau đó chạy pod install ở Terminal.
Cuối cùng thay toàn bộ nội dung của AppDelegate.swift như sau:
import UIKit
import RWPickFlavor
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var rootViewController: UIViewController!
func application(application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [NSObject : AnyObject]?) -> Bool {
setupRootViewController()
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.rootViewController = rootViewController
window?.makeKeyAndVisible()
return true
}
func setupRootViewController() {
let bundle = NSBundle(forClass: PickFlavorViewController.self)
let storyboard = UIStoryboard(name: "Main", bundle: bundle)
rootViewController = storyboard.instantiateInitialViewController()!
}
}
Trong hàm setupRootViewController(), với bundle từ class PickFlavorViewController.Sau đó bạn chạy và sẽ được như sau.
Cập nhật code lên thư viện của bạn
Nếu bạn muốn thêm một số các chức năng và file sau đó đẩu lên thì bạn làm như sau:
cd ~/Documents/Libraries/RWPickFlavor
git add .
git commit -m "Added BetterBaseClasses dependency"
git tag 0.2.0
git push origin master --tags
pod repo push RWPodSpecs RWPickFlavor.podspec
Tiếp theo cần cập nhật lại Pod version đang sử dụng
pod 'RWPickFlavor', '~> 0.2.0'
Sau đó chạy pod install
Nguồn: Techmaster
CÔNG TY TNHH AMERICA INDOCHINA MANAGEMENT VIETNAM
Location: Hồ Chí Minh
Salary: Competitive
Location: Hà Nội
Salary: 8 Mil - 15 Mil VND
IT - Middle/ Senior iOS Developer
Ngân Hàng TMCP Phương Đông - OCB
Location: Hồ Chí Minh
Salary: Competitive