From a8a302973ff1951ddb874a652a4c01140f45ea46 Mon Sep 17 00:00:00 2001 From: kevinzhow Date: Wed, 6 May 2015 21:57:12 +0800 Subject: [PATCH] Add skill home --- Yep.xcodeproj/project.pbxproj | 40 +++++++ Yep/Base.lproj/Main.storyboard | 54 ++++++++- Yep/Configs/YepConfig.swift | 4 + Yep/Extensions/UIFont+Yep.swift | 8 +- .../Cover3.imageset/Contents.json | 21 ++++ .../Cover3.imageset/Cover3.png | Bin 0 -> 80498 bytes Yep/Services/YepService.swift | 2 +- .../Profile/ProfileViewController.swift | 28 ++++- .../SkillHome/SkillHomeViewController.swift | 110 ++++++++++++++++++ .../SkillHomeViewControllerExtension.swift | 84 +++++++++++++ .../SkillHomeHeaderView.swift | 71 +++++++++++ .../SkillHomeSectionButton.swift | 22 ++++ 12 files changed, 438 insertions(+), 6 deletions(-) create mode 100644 Yep/Images.xcassets/Cover3.imageset/Contents.json create mode 100644 Yep/Images.xcassets/Cover3.imageset/Cover3.png create mode 100644 Yep/ViewControllers/SkillHome/SkillHomeViewController.swift create mode 100644 Yep/ViewControllers/SkillPage/SkillHomeViewControllerExtension.swift create mode 100644 Yep/Views/SkillHomeHeaderView/SkillHomeHeaderView.swift create mode 100644 Yep/Views/SkillHomeSectionButton/SkillHomeSectionButton.swift diff --git a/Yep.xcodeproj/project.pbxproj b/Yep.xcodeproj/project.pbxproj index 1cb2f939..ce06c0e8 100644 --- a/Yep.xcodeproj/project.pbxproj +++ b/Yep.xcodeproj/project.pbxproj @@ -9,6 +9,10 @@ /* Begin PBXBuildFile section */ 0A02E46F1AC9208A00235DBF /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A02E46E1AC9208A00235DBF /* libxml2.dylib */; }; 0A0A11821AE389380008772C /* RegisterSkillsLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A0A11811AE389380008772C /* RegisterSkillsLayout.swift */; }; + 0A1CAC6B1AFA3D8900826B45 /* SkillHomeViewControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A1CAC6A1AFA3D8900826B45 /* SkillHomeViewControllerExtension.swift */; }; + 0A1CAC6E1AFA42D400826B45 /* SkillHomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A1CAC6D1AFA42D400826B45 /* SkillHomeViewController.swift */; }; + 0A1CAC701AFA481600826B45 /* SkillHomeHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A1CAC6F1AFA481600826B45 /* SkillHomeHeaderView.swift */; }; + 0A1CAC731AFA526200826B45 /* SkillHomeSectionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A1CAC721AFA526200826B45 /* SkillHomeSectionButton.swift */; }; 0A271FD71ACA055400822DFC /* YepAudioService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A271FD61ACA055400822DFC /* YepAudioService.swift */; }; 0A3E60601ACCA9C0003DC853 /* String+Yep.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A3E605F1ACCA9C0003DC853 /* String+Yep.swift */; }; 0A3E60671ACCAECE003DC853 /* YepLocationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A3E60661ACCAECE003DC853 /* YepLocationService.swift */; }; @@ -171,6 +175,10 @@ /* Begin PBXFileReference section */ 0A02E46E1AC9208A00235DBF /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; }; 0A0A11811AE389380008772C /* RegisterSkillsLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RegisterSkillsLayout.swift; path = ViewControllers/Register/RegisterSkillsLayout.swift; sourceTree = ""; }; + 0A1CAC6A1AFA3D8900826B45 /* SkillHomeViewControllerExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SkillHomeViewControllerExtension.swift; path = ViewControllers/SkillPage/SkillHomeViewControllerExtension.swift; sourceTree = ""; }; + 0A1CAC6D1AFA42D400826B45 /* SkillHomeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SkillHomeViewController.swift; path = ViewControllers/SkillHome/SkillHomeViewController.swift; sourceTree = ""; }; + 0A1CAC6F1AFA481600826B45 /* SkillHomeHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SkillHomeHeaderView.swift; path = Views/SkillHomeHeaderView/SkillHomeHeaderView.swift; sourceTree = ""; }; + 0A1CAC721AFA526200826B45 /* SkillHomeSectionButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SkillHomeSectionButton.swift; path = Views/SkillHomeSectionButton/SkillHomeSectionButton.swift; sourceTree = ""; }; 0A271FD61ACA055400822DFC /* YepAudioService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = YepAudioService.swift; path = Services/YepAudioService.swift; sourceTree = ""; }; 0A3E605F1ACCA9C0003DC853 /* String+Yep.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "String+Yep.swift"; path = "Extensions/String+Yep.swift"; sourceTree = ""; }; 0A3E60661ACCAECE003DC853 /* YepLocationService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = YepLocationService.swift; path = Services/YepLocationService.swift; sourceTree = ""; }; @@ -362,6 +370,31 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0A1CAC6C1AFA3D8C00826B45 /* SkillPage */ = { + isa = PBXGroup; + children = ( + 0A1CAC6D1AFA42D400826B45 /* SkillHomeViewController.swift */, + 0A1CAC6A1AFA3D8900826B45 /* SkillHomeViewControllerExtension.swift */, + ); + name = SkillPage; + sourceTree = ""; + }; + 0A1CAC711AFA481900826B45 /* SkillHomeHeaderView */ = { + isa = PBXGroup; + children = ( + 0A1CAC6F1AFA481600826B45 /* SkillHomeHeaderView.swift */, + ); + name = SkillHomeHeaderView; + sourceTree = ""; + }; + 0A1CAC741AFA526400826B45 /* SkillHomeSectionButton */ = { + isa = PBXGroup; + children = ( + 0A1CAC721AFA526200826B45 /* SkillHomeSectionButton.swift */, + ); + name = SkillHomeSectionButton; + sourceTree = ""; + }; 0A3E60631ACCAC02003DC853 /* NSDate+TimeAgo */ = { isa = PBXGroup; children = ( @@ -482,6 +515,7 @@ 0A5D83951AC5D3CD000045BF /* TabBar */, 50894CF21AEA472B000981AF /* Settings */, 50894CFF1AEA5A7E000981AF /* EditProfile */, + 0A1CAC6C1AFA3D8C00826B45 /* SkillPage */, ); name = ViewControllers; sourceTree = ""; @@ -549,6 +583,8 @@ 508D16BE1ADCAF0900270E3F /* PullToRefresh */, 50EB8CCC1AEA1AC5001AC1EE /* Media */, 50E61CEC1AF1F6A600908A9D /* ConversationTitle */, + 0A1CAC711AFA481900826B45 /* SkillHomeHeaderView */, + 0A1CAC741AFA526400826B45 /* SkillHomeSectionButton */, ); name = Views; sourceTree = ""; @@ -1330,8 +1366,10 @@ 508D17471ACCF4710092D666 /* ChatLeftAudioCell.swift in Sources */, 50894D021AEA6433000981AF /* EditProfileLessInfoCell.swift in Sources */, 50894CFA1AEA54BA000981AF /* SettingsMoreCell.swift in Sources */, + 0A1CAC6B1AFA3D8900826B45 /* SkillHomeViewControllerExtension.swift in Sources */, 502AE51B1AB70DDB005BD199 /* WelcomeViewController.swift in Sources */, 50894D071AEDFDA2000981AF /* EditProfileMoreInfoCell.swift in Sources */, + 0A1CAC731AFA526200826B45 /* SkillHomeSectionButton.swift in Sources */, 50E114F41ABBF9CC00F13000 /* Models.swift in Sources */, 5053AD551AF83B0F00B3CBFA /* ChatRightLocationCell.swift in Sources */, 50A9D4571ACD393A000B2599 /* YepWaverView.swift in Sources */, @@ -1345,9 +1383,11 @@ 5023DE591AB6DBC100B3EE96 /* UIImage+Yep.swift in Sources */, 50EB8CBF1AE89ED8001AC1EE /* ChatLeftVideoCell.swift in Sources */, 502AE5331AB86020005BD199 /* RegisterVerifyMobileViewController.swift in Sources */, + 0A1CAC6E1AFA42D400826B45 /* SkillHomeViewController.swift in Sources */, 502AE5401AB88862005BD199 /* SkillRankCell.swift in Sources */, 50C090A01ADE391600CC6389 /* AddSkillsReusableView.swift in Sources */, 5023DE2D1AB685ED00B3EE96 /* DiscoverViewController.swift in Sources */, + 0A1CAC701AFA481600826B45 /* SkillHomeHeaderView.swift in Sources */, 502AE53A1AB871C1005BD199 /* YepAlert.swift in Sources */, 5053AD4D1AF79EEA00B3CBFA /* UserPickedLocationPin.swift in Sources */, 50C0909D1ADE294800CC6389 /* RegisterPickSkillsLayout.swift in Sources */, diff --git a/Yep/Base.lproj/Main.storyboard b/Yep/Base.lproj/Main.storyboard index a1486c2a..be777729 100644 --- a/Yep/Base.lproj/Main.storyboard +++ b/Yep/Base.lproj/Main.storyboard @@ -511,11 +511,12 @@ + - + @@ -553,7 +554,56 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Yep/Configs/YepConfig.swift b/Yep/Configs/YepConfig.swift index 2b141592..8941989f 100644 --- a/Yep/Configs/YepConfig.swift +++ b/Yep/Configs/YepConfig.swift @@ -14,6 +14,10 @@ class YepConfig { static let minMessageSampleViewWidth: CGFloat = 25.0 + static let skillHomeHeaderViewHeight: CGFloat = 250.0 + + static let skillHomeHeaderButtonHeight: CGFloat = 50.0 + class func clientType() -> Int { // TODO: clientType #if DEBUG diff --git a/Yep/Extensions/UIFont+Yep.swift b/Yep/Extensions/UIFont+Yep.swift index b74dc262..f25681bb 100644 --- a/Yep/Extensions/UIFont+Yep.swift +++ b/Yep/Extensions/UIFont+Yep.swift @@ -14,11 +14,15 @@ extension UIFont { } class func skillTextFont() -> UIFont { - return UIFont(name: "Helvetica-Light", size: 14)! + return UIFont(name: "HelveticaNeue-Light", size: 14)! } class func skillTextLargeFont() -> UIFont { - return UIFont(name: "Helvetica-Light", size: 20)! + return UIFont(name: "HelveticaNeue-Light", size: 20)! + } + + class func skillHomeTextLargeFont() -> UIFont { + return UIFont(name: "HelveticaNeue", size: 18)! } class func navigationBarTitleFont() -> UIFont { diff --git a/Yep/Images.xcassets/Cover3.imageset/Contents.json b/Yep/Images.xcassets/Cover3.imageset/Contents.json new file mode 100644 index 00000000..a0834732 --- /dev/null +++ b/Yep/Images.xcassets/Cover3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "Cover3.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Yep/Images.xcassets/Cover3.imageset/Cover3.png b/Yep/Images.xcassets/Cover3.imageset/Cover3.png new file mode 100644 index 0000000000000000000000000000000000000000..a517c385f7ba54186093881b56836282954b54c7 GIT binary patch literal 80498 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�-?5?Y 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 z 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 [DiscoveredUser]? = { data in - println("discoverUsers: \(data)") +// println("discoverUsers: \(data)") if let usersData = data["users"] as? [JSONDictionary] { diff --git a/Yep/ViewControllers/Profile/ProfileViewController.swift b/Yep/ViewControllers/Profile/ProfileViewController.swift index b8d6f4a8..ace2002d 100644 --- a/Yep/ViewControllers/Profile/ProfileViewController.swift +++ b/Yep/ViewControllers/Profile/ProfileViewController.swift @@ -25,7 +25,8 @@ class ProfileViewController: UIViewController { @IBOutlet weak var sayHiView: UIView! @IBOutlet weak var sayHiButton: UIButton! - + + var shouldBackToDefaultNavgationbar = true let skillCellIdentifier = "SkillCell" let headerCellIdentifier = "ProfileHeaderCell" @@ -140,6 +141,11 @@ class ProfileViewController: UIViewController { super.viewWillDisappear(animated) if let navigationController = navigationController { + + if !shouldBackToDefaultNavgationbar { + return + } + navigationController.navigationBar.backgroundColor = nil navigationController.navigationBar.translucent = true navigationController.navigationBar.shadowImage = nil @@ -164,9 +170,19 @@ class ProfileViewController: UIViewController { // MARK: Navigation override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + + shouldBackToDefaultNavgationbar = true + if segue.identifier == "showConversation" { let vc = segue.destinationViewController as! ConversationViewController vc.conversation = sender as! Conversation + } else if segue.identifier == "showSkillHome" { + + if let cell = sender as? SkillCell { + let vc = segue.destinationViewController as! SkillHomeViewController + vc.skillName = cell.skillLabel.text + shouldBackToDefaultNavgationbar = false + } } } @@ -512,6 +528,16 @@ extension ProfileViewController: UICollectionViewDataSource, UICollectionViewDel func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize { return CGSizeMake(collectionViewWidth, 0) } + + func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { + + if indexPath.section == ProfileSection.Learning.rawValue || indexPath.section == ProfileSection.Master.rawValue { + let cell = collectionView.cellForItemAtIndexPath(indexPath) as! SkillCell + + self.performSegueWithIdentifier("showSkillHome", sender: cell) + } + + } } diff --git a/Yep/ViewControllers/SkillHome/SkillHomeViewController.swift b/Yep/ViewControllers/SkillHome/SkillHomeViewController.swift new file mode 100644 index 00000000..47af72db --- /dev/null +++ b/Yep/ViewControllers/SkillHome/SkillHomeViewController.swift @@ -0,0 +1,110 @@ +// +// SkillHomeViewController.swift +// Yep +// +// Created by kevinzhow on 15/5/6. +// Copyright (c) 2015年 Catch Inc. All rights reserved. +// + +import UIKit + +class SkillHomeViewController: UIViewController { + + var skillName: String? { + didSet { + self.title = skillName + } + } + + @IBOutlet weak var headerView: SkillHomeHeaderView! + + @IBOutlet weak var headerViewHeightLayoutConstraint: NSLayoutConstraint! + + var discoveredMasterUsers = [DiscoveredUser]() + + var discoveredLearningUsers = [DiscoveredUser]() + + override func viewDidLoad() { + super.viewDidLoad() + + if let skillNameString = skillName { + discoverUserBySkillName(skillNameString) + } + + self.headerViewHeightLayoutConstraint.constant = YepConfig.skillHomeHeaderViewHeight + + customTitleView() + + // Do any additional setup after loading the view. + } + + func customTitleView() { + + var titleLabel = UILabel() + + let textAttributes = [ + NSForegroundColorAttributeName: UIColor.whiteColor(), + NSFontAttributeName: UIFont.skillHomeTextLargeFont() + ] + + var titleAttr = NSMutableAttributedString(string: skillName!, attributes:textAttributes) + + titleLabel.attributedText = titleAttr + + titleLabel.textAlignment = NSTextAlignment.Center + + titleLabel.backgroundColor = UIColor.yepTintColor() + + titleLabel.sizeToFit() + + titleLabel.bounds = CGRectInset(titleLabel.frame, -25.0, -4.0) + + titleLabel.layer.cornerRadius = titleLabel.frame.size.height/2.0 + + titleLabel.layer.masksToBounds = true + + self.navigationItem.titleView = titleLabel + } + + func discoverUserBySkillName(skillName: String) { + + discoverUsers(masterSkills: [skillName], learningSkills: [], discoveredUserSortStyle: .LastSignIn, failureHandler: { (reason, errorMessage) in + defaultFailureHandler(reason, errorMessage) + + }, completion: { discoveredUsers in + self.discoveredMasterUsers = discoveredUsers + + dispatch_async(dispatch_get_main_queue()) { + } + }) + + discoverUsers(masterSkills: [], learningSkills: [skillName], discoveredUserSortStyle: .LastSignIn, failureHandler: { (reason, errorMessage) in + defaultFailureHandler(reason, errorMessage) + + }, completion: { discoveredUsers in + self.discoveredLearningUsers = discoveredUsers + + dispatch_async(dispatch_get_main_queue()) { + } + }) + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} + + diff --git a/Yep/ViewControllers/SkillPage/SkillHomeViewControllerExtension.swift b/Yep/ViewControllers/SkillPage/SkillHomeViewControllerExtension.swift new file mode 100644 index 00000000..b478149b --- /dev/null +++ b/Yep/ViewControllers/SkillPage/SkillHomeViewControllerExtension.swift @@ -0,0 +1,84 @@ +// +// SkillPageTableViewController.swift +// Yep +// +// Created by kevinzhow on 15/5/6. +// Copyright (c) 2015年 Catch Inc. All rights reserved. +// + +import UIKit + + +extension SkillHomeViewController: UITableViewDelegate { + + + // MARK: - Table view data source + + func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Potentially incomplete method implementation. + // Return the number of sections. + return 0 + } + + func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete method implementation. + // Return the number of rows in the section. + return 0 + } + + /* + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! UITableViewCell + + // Configure the cell... + + return cell + } + */ + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return NO if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. + } + */ + +} \ No newline at end of file diff --git a/Yep/Views/SkillHomeHeaderView/SkillHomeHeaderView.swift b/Yep/Views/SkillHomeHeaderView/SkillHomeHeaderView.swift new file mode 100644 index 00000000..f866f300 --- /dev/null +++ b/Yep/Views/SkillHomeHeaderView/SkillHomeHeaderView.swift @@ -0,0 +1,71 @@ +// +// SkillHomeHeaderView.swift +// Yep +// +// Created by kevinzhow on 15/5/6. +// Copyright (c) 2015年 Catch Inc. All rights reserved. +// + +import UIKit + +class SkillHomeHeaderView: UIView { + + lazy var headerImageView: UIImageView = { + + var tempImageView = UIImageView(frame: CGRectZero) + + tempImageView.contentMode = UIViewContentMode.ScaleAspectFill + tempImageView.clipsToBounds = true + + return tempImageView; + + }() + + lazy var masterButton: UIButton = { + var button = createSkillHomeButtonWithText("Master", 100, YepConfig.skillHomeHeaderButtonHeight) + return button + }() + + lazy var learningButton: UIButton = { + var button = createSkillHomeButtonWithText("Learning", 100, YepConfig.skillHomeHeaderButtonHeight) + return button + }() + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + + func setup() { + headerImageView.image = UIImage(named: "Cover3") + self.addSubview(headerImageView) + self.addSubview(masterButton) + self.addSubview(learningButton) + self.backgroundColor = UIColor.lightGrayColor() + } + + + override func layoutSubviews() { + headerImageView.frame = self.bounds + + masterButton.frame = CGRectMake(0, self.frame.height - YepConfig.skillHomeHeaderButtonHeight, self.frame.size.width/2.0, YepConfig.skillHomeHeaderButtonHeight) + + learningButton.frame = CGRectMake(masterButton.frame.size.width, self.frame.height - YepConfig.skillHomeHeaderButtonHeight, self.frame.size.width/2.0, YepConfig.skillHomeHeaderButtonHeight) + } + + /* + // Only override drawRect: if you perform custom drawing. + // An empty implementation adversely affects performance during animation. + override func drawRect(rect: CGRect) { + // Drawing code + } + */ + + +} diff --git a/Yep/Views/SkillHomeSectionButton/SkillHomeSectionButton.swift b/Yep/Views/SkillHomeSectionButton/SkillHomeSectionButton.swift new file mode 100644 index 00000000..6cfee6c3 --- /dev/null +++ b/Yep/Views/SkillHomeSectionButton/SkillHomeSectionButton.swift @@ -0,0 +1,22 @@ +// +// SkillHomeSectionButton.swift +// Yep +// +// Created by kevinzhow on 15/5/6. +// Copyright (c) 2015年 Catch Inc. All rights reserved. +// + +import UIKit + +func createSkillHomeButtonWithText(text: String, width: CGFloat, height: CGFloat) -> UIButton { + + var button = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton + button.frame = CGRectMake(0, 0, width, height) + button.setTitle(text, forState: UIControlState.Normal) + button.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal) + button.backgroundColor = UIColor.whiteColor() + button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) + button.titleLabel?.font = UIFont.systemFontOfSize(16.0) + return button + +}