├── .gitignore ├── .gitmodules ├── .travis.yml ├── LICENSE ├── README.md ├── WeCenterMobile.xcodeproj ├── project.pbxproj └── xcshareddata │ └── xcschemes │ └── WeCenterMobile.xcscheme ├── WeCenterMobile ├── AppDelegate.swift ├── Base.lproj │ └── LaunchScreen.xib ├── Configuration.plist ├── Controller │ ├── AnswerListViewController.swift │ ├── ArticleListViewController.swift │ ├── ArticleViewController.swift │ ├── CommetListViewController.swift │ ├── ExploreViewController.swift │ ├── FeaturedObjectListViewController.swift │ ├── HomeViewController.swift │ ├── HotTopicListViewController.swift │ ├── HotTopicViewController.swift │ ├── LoginViewController.swift │ ├── LoginViewController.xib │ ├── MainViewController.swift │ ├── PublishmentViewController.swift │ ├── PublishmentViewControllerA.xib │ ├── PublishmentViewControllerB.xib │ ├── QuestionListViewController.swift │ ├── QuestionViewController.swift │ ├── SearchViewController.swift │ ├── SettingsViewController.storyboard │ ├── SettingsViewController.swift │ ├── TopicListViewController.swift │ ├── TopicViewController.swift │ ├── UserEditViewController.swift │ ├── UserEditViewController.xib │ ├── UserListViewController.swift │ └── UserViewController.swift ├── External │ ├── GBDeviceInfo.h │ ├── WeChatSDK │ │ ├── WXApi.h │ │ ├── WXApiObject.h │ │ ├── WeChatSDK.h │ │ ├── WechatAuthSDK.h │ │ └── libWeChatSDK.a │ └── module.modulemap ├── Images.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-40.png │ │ ├── Icon-40@2x-1.png │ │ ├── Icon-40@2x.png │ │ ├── Icon-40@3x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small.png │ │ ├── Icon-Small@2x-1.png │ │ ├── Icon-Small@2x.png │ │ └── Icon-Small@3x.png │ ├── Comment │ │ └── Comment-Button.imageset │ │ │ ├── Comment-Button.png │ │ │ ├── Comment-Button@2x.png │ │ │ └── Contents.json │ ├── Evaluation │ │ ├── Evaluation-Dislike-Highlighted.imageset │ │ │ ├── Contents.json │ │ │ ├── Evaluation-Dislike-Highlighted.png │ │ │ ├── Evaluation-Dislike-Highlighted@2x.png │ │ │ └── Evaluation-Dislike-Highlighted@3x.png │ │ ├── Evaluation-Dislike-Normal.imageset │ │ │ ├── Contents.json │ │ │ ├── Evaluation-Dislike-Normal.png │ │ │ ├── Evaluation-Dislike-Normal@2x.png │ │ │ └── Evaluation-Dislike-Normal@3x.png │ │ ├── Evaluation-Like-Highlighted.imageset │ │ │ ├── Contents.json │ │ │ ├── Evaluation-Like-Highlighted.png │ │ │ ├── Evaluation-Like-Highlighted@2x.png │ │ │ └── Evaluation-Like-Highlighted@3x.png │ │ └── Evaluation-Like-Normal.imageset │ │ │ ├── Contents.json │ │ │ ├── Evaluation-Like-Normal.png │ │ │ ├── Evaluation-Like-Normal@2x.png │ │ │ └── Evaluation-Like-Normal@3x.png │ ├── LaunchImage.launchimage │ │ └── Contents.json │ ├── Login │ │ ├── Login-Background.imageset │ │ │ ├── Contents.json │ │ │ └── Login-Background.png │ │ ├── Login-Mail.imageset │ │ │ ├── Contents.json │ │ │ ├── Login-Mail.png │ │ │ ├── Login-Mail@2x.png │ │ │ └── Login-Mail@3x.png │ │ ├── Login-Password.imageset │ │ │ ├── Contents.json │ │ │ ├── Login-Password.png │ │ │ ├── Login-Password@2x.png │ │ │ └── Login-Password@3x.png │ │ └── Login-User.imageset │ │ │ ├── Contents.json │ │ │ ├── Login-User.png │ │ │ ├── Login-User@2x.png │ │ │ └── Login-User@3x.png │ ├── Navigation │ │ ├── Navigation-Back.imageset │ │ │ ├── Contents.json │ │ │ ├── Navigation-Back.png │ │ │ └── Navigation-Back@2x.png │ │ └── Navigation-Root.imageset │ │ │ ├── Contents.json │ │ │ ├── Navigation-Root.png │ │ │ └── Navigation-Root@2x.png │ ├── Publishment │ │ ├── Publishment-Answer.imageset │ │ │ ├── Contents.json │ │ │ ├── Publishment-Answer.png │ │ │ └── Publishment-Answer@2x.png │ │ ├── Publishment-Article_Question.imageset │ │ │ ├── Contents.json │ │ │ ├── Publishment-Article_Question.png │ │ │ └── Publishment-Article_Question@2x.png │ │ └── Publishment-Attachment.imageset │ │ │ ├── Contents.json │ │ │ ├── Publishment-Attachment@2x.png │ │ │ └── Publishment-Attachment@3x.png │ ├── Question │ │ ├── Question-Bookmark.imageset │ │ │ ├── Contents.json │ │ │ ├── Question-Bookmark.png │ │ │ ├── Question-Bookmark@2x.png │ │ │ └── Question-Bookmark@3x.png │ │ └── Question-Focus.imageset │ │ │ ├── Contents.json │ │ │ ├── Question-Focus.png │ │ │ └── Question-Focus@2x.png │ ├── Share │ │ ├── Share-Button.imageset │ │ │ ├── Contents.json │ │ │ ├── Share-Button.png │ │ │ └── Share-Button@2x.png │ │ ├── Share-SinaWeibo.imageset │ │ │ ├── Contents.json │ │ │ ├── Share-SinaWeibo.png │ │ │ ├── Share-SinaWeibo@2x.png │ │ │ └── Share-SinaWeibo@3x.png │ │ ├── Share-WeChatMoments.imageset │ │ │ ├── Contents.json │ │ │ ├── Share-WeChatMoments.png │ │ │ ├── Share-WeChatMoments@2x.png │ │ │ └── Share-WeChatMoments@3x.png │ │ └── Share-WeChatSession.imageset │ │ │ ├── Contents.json │ │ │ ├── Share-WeChatSession.png │ │ │ ├── Share-WeChatSession@2x.png │ │ │ └── Share-WeChatSession@3x.png │ ├── Sidebar │ │ ├── Contents.json │ │ ├── Sidebar-About.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-About.png │ │ │ └── Sidebar-About@2x.png │ │ ├── Sidebar-Background.imageset │ │ │ ├── Contents.json │ │ │ └── Sidebar-Background.png │ │ ├── Sidebar-Drafts.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Drafts.png │ │ │ └── Sidebar-Drafts@2x.png │ │ ├── Sidebar-Explore.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Explore.png │ │ │ └── Sidebar-Explore@2x.png │ │ ├── Sidebar-History.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-History.png │ │ │ └── Sidebar-History@2x.png │ │ ├── Sidebar-Home.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Home.png │ │ │ └── Sidebar-Home@2x.png │ │ ├── Sidebar-Publishment.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Publishment.png │ │ │ └── Sidebar-Publishment@2x.png │ │ ├── Sidebar-ReadingList.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-ReadingList.png │ │ │ └── Sidebar-ReadingList@2x.png │ │ ├── Sidebar-Search.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Search.png │ │ │ └── Sidebar-Search@2x.png │ │ ├── Sidebar-Settings.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Settings.png │ │ │ └── Sidebar-Settings@2x.png │ │ ├── Sidebar-Test.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Test.png │ │ │ └── Sidebar-Test@2x.png │ │ ├── Sidebar-Topic.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-Topic-1.png │ │ │ └── Sidebar-Topic.png │ │ └── Sidebar-User.imageset │ │ │ ├── Contents.json │ │ │ ├── Sidebar-User.png │ │ │ └── Sidebar-User@2x.png │ ├── Topic │ │ └── Topic-DefaultImage.imageset │ │ │ ├── Contents.json │ │ │ └── Topic-DefaultImage.png │ └── User │ │ ├── Gender │ │ ├── User-Gender-Female.imageset │ │ │ ├── Contents.json │ │ │ ├── User-Gender-Female.png │ │ │ ├── User-Gender-Female@2x.png │ │ │ └── User-Gender-Female@3x.png │ │ └── User-Gender-Male.imageset │ │ │ ├── Contents.json │ │ │ ├── User-Gender-Male.png │ │ │ ├── User-Gender-Male@2x.png │ │ │ └── User-Gender-Male@3x.png │ │ ├── Header │ │ ├── User-Header-Agreement.imageset │ │ │ ├── Contents.json │ │ │ ├── User-Header-Agreement.png │ │ │ ├── User-Header-Agreement@2x.png │ │ │ └── User-Header-Agreement@3x.png │ │ ├── User-Header-Like.imageset │ │ │ ├── Contents.json │ │ │ ├── User-Header-Like.png │ │ │ ├── User-Header-Like@2x.png │ │ │ └── User-Header-Like@3x.png │ │ ├── User-Header-Star.imageset │ │ │ ├── Contents.json │ │ │ ├── User-Header-Star.png │ │ │ ├── User-Header-Star@2x.png │ │ │ └── User-Header-Star@3x.png │ │ └── User-Header-Thank.imageset │ │ │ ├── Contents.json │ │ │ ├── User-Header-Thank.png │ │ │ ├── User-Header-Thank@2x.png │ │ │ └── User-Header-Thank@3x.png │ │ └── User-DefaultAvatar.imageset │ │ ├── Contents.json │ │ └── User-DefaultAvatar.png ├── Info.plist ├── Localization │ ├── en.lproj │ │ ├── Discovery.strings │ │ ├── User.strings │ │ └── Welcome.strings │ ├── zh-Hans.lproj │ │ ├── Discovery.strings │ │ ├── User.strings │ │ └── Welcome.strings │ └── zh-Hant.lproj │ │ ├── Discovery.strings │ │ ├── User.strings │ │ └── Welcome.strings ├── Model │ ├── DataObject │ │ ├── Action.swift │ │ ├── Answer.swift │ │ ├── AnswerAction.swift │ │ ├── AnswerAgreementAction.swift │ │ ├── AnswerComment.swift │ │ ├── Article.swift │ │ ├── ArticleAgreementAction.swift │ │ ├── ArticleComment.swift │ │ ├── ArticleCommentaryAction.swift │ │ ├── ArticlePublishmentAction.swift │ │ ├── Comment.swift │ │ ├── DataObject+Search.swift │ │ ├── DataObject.swift │ │ ├── FeaturedArticle.swift │ │ ├── FeaturedObject.swift │ │ ├── FeaturedQuestionAnswer.swift │ │ ├── Question.swift │ │ ├── QuestionFocusingAction.swift │ │ ├── QuestionPublishmentAction.swift │ │ ├── Topic.swift │ │ └── User.swift │ ├── Manager │ │ ├── DataManager.swift │ │ ├── NetworkManager.swift │ │ └── SettingsManager.swift │ ├── Others │ │ ├── Evalation.swift │ │ ├── SidebarCategory.swift │ │ ├── String+PlainString.swift │ │ ├── Theme.swift │ │ └── TintColor.swift │ └── Sharing │ │ ├── SinaWeiboActivity.swift │ │ ├── WeChatActivity.swift │ │ ├── WeChatSessionActivity.swift │ │ └── WeChatTimelineActivity.swift ├── Themes.plist ├── View │ ├── Answer │ │ ├── AnswerAdditionCell.swift │ │ ├── AnswerAdditionCell.xib │ │ ├── AnswerCell.swift │ │ ├── AnswerCell.xib │ │ ├── AnswerCellWithQuestionTitle.swift │ │ └── AnswerCellWithQuestionTitle.xib │ ├── Article │ │ ├── ArticleCell.swift │ │ ├── ArticleCell.xib │ │ ├── ArticleFooterView.swift │ │ ├── ArticleFooterView.xib │ │ └── ArticleHeaderView.swift │ ├── Comment │ │ ├── CommentCell.swift │ │ └── CommentCell.xib │ ├── Explore │ │ ├── FeaturedArticleCell.swift │ │ ├── FeaturedArticleCell.xib │ │ ├── FeaturedQuestionAnswerCell.swift │ │ ├── FeaturedQuestionAnswerCellA.xib │ │ └── FeaturedQuestionAnswerCellB.xib │ ├── Home │ │ ├── AnswerActionCell.swift │ │ ├── AnswerActionCell.xib │ │ ├── AnswerAgreementActionCell.swift │ │ ├── AnswerAgreementActionCell.xib │ │ ├── ArticleAgreementActionCell.swift │ │ ├── ArticleAgreementActionCell.xib │ │ ├── ArticleCommentaryActionCell.swift │ │ ├── ArticleCommentaryActionCell.xib │ │ ├── ArticlePublishmentActionCell.swift │ │ ├── ArticlePublishmentActionCell.xib │ │ ├── QuestionFocusingActionCell.swift │ │ ├── QuestionFocusingActionCell.xib │ │ ├── QuestionPublishmentActionCell.swift │ │ └── QuestionPublishmentActionCell.xib │ ├── Others │ │ ├── ImageUploadingProgressBar.xib │ │ ├── KeyboardBar.swift │ │ ├── TableViewWithKeyboardBar.swift │ │ ├── UIImageView+DataObject.swift │ │ └── UITableView+Refresh.swift │ ├── Question │ │ ├── QuestionBodyCell.swift │ │ ├── QuestionBodyCell.xib │ │ ├── QuestionCell.swift │ │ ├── QuestionCell.xib │ │ ├── QuestionFooterCell.swift │ │ ├── QuestionFooterCell.xib │ │ ├── QuestionHeaderCell.swift │ │ ├── QuestionHeaderCell.xib │ │ ├── QuestionTagListCell.swift │ │ ├── QuestionTagListCell.xib │ │ ├── QuestionTitleCell.swift │ │ └── QuestionTitleCell.xib │ ├── Search │ │ ├── ArticleSearchResultCell.swift │ │ ├── ArticleSearchResultCell.xib │ │ ├── QuestionSearchResultCell.swift │ │ ├── QuestionSearchResultCell.xib │ │ ├── TopicSearchResultCell.swift │ │ ├── TopicSearchResultCell.xib │ │ ├── UserSearchResultCell.swift │ │ └── UserSearchResultCell.xib │ ├── Sidebar │ │ ├── SidebarCategoryCell.swift │ │ ├── SidebarCategoryCell.xib │ │ ├── SidebarLogoutCell.swift │ │ ├── SidebarLogoutCell.xib │ │ ├── SidebarUserView.swift │ │ └── SidebarUserView.xib │ ├── Topic │ │ ├── TopicCell.swift │ │ ├── TopicCell.xib │ │ └── TopicHeaderView.swift │ └── User │ │ ├── UserAtView.swift │ │ ├── UserBodyCell.swift │ │ ├── UserBodyCell.xib │ │ ├── UserCell.swift │ │ ├── UserCell.xib │ │ ├── UserFooterCell.swift │ │ ├── UserFooterCell.xib │ │ ├── UserHeaderView.swift │ │ └── UserHeaderView.xib ├── WeCenterMobile.pch └── WeCenterMobile.xcdatamodeld │ ├── .xccurrentversion │ └── WeCenterMobile.xcdatamodel │ └── contents └── WeCenterMobileTests ├── Info.plist └── WeCenterMobileTests.swift /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | build/ 3 | *.pbxuser 4 | !default.pbxuser 5 | *.mode1v3 6 | !default.mode1v3 7 | *.mode2v3 8 | !default.mode2v3 9 | *.perspectivev3 10 | !default.perspectivev3 11 | *.xcworkspace 12 | !default.xcworkspace 13 | xcuserdata 14 | profile 15 | *.moved-aside 16 | DerivedData 17 | .idea/ 18 | 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "WeCenterMobile/External/MJRefresh"] 2 | path = WeCenterMobile/External/MJRefresh 3 | url = https://github.com/CoderMJLee/MJRefresh.git 4 | [submodule "WeCenterMobile/External/EAColourfulProgressView"] 5 | path = WeCenterMobile/External/EAColourfulProgressView 6 | url = https://github.com/Eddpt/EAColourfulProgressView 7 | [submodule "WeCenterMobile/External/SVProgressHUD"] 8 | path = WeCenterMobile/External/SVProgressHUD 9 | url = https://github.com/TransitApp/SVProgressHUD.git 10 | [submodule "WeCenterMobile/External/AFNetworking"] 11 | path = WeCenterMobile/External/AFNetworking 12 | url = https://github.com/AFNetworking/AFNetworking.git 13 | [submodule "WeCenterMobile/External/DTCoreText"] 14 | path = WeCenterMobile/External/DTCoreText 15 | url = https://github.com/Cocoanetics/DTCoreText.git 16 | [submodule "WeCenterMobile/External/RMDateSelectionViewController"] 17 | path = WeCenterMobile/External/RMDateSelectionViewController 18 | url = https://github.com/CooperRS/RMDateSelectionViewController.git 19 | [submodule "WeCenterMobile/External/GBDeviceInfo"] 20 | path = WeCenterMobile/External/GBDeviceInfo 21 | url = https://github.com/lmirosevic/GBDeviceInfo.git 22 | [submodule "WeCenterMobile/External/RMActionController"] 23 | path = WeCenterMobile/External/RMActionController 24 | url = https://github.com/CooperRS/RMActionController.git 25 | [submodule "WeCenterMobile/External/AFViewShaker"] 26 | path = WeCenterMobile/External/AFViewShaker 27 | url = https://github.com/ArtFeel/AFViewShaker.git 28 | [submodule "WeCenterMobile/External/ZFTokenField"] 29 | path = WeCenterMobile/External/ZFTokenField 30 | url = https://github.com/Msr-B/ZFTokenField 31 | [submodule "WeCenterMobile/External/SinaWeiboSDK"] 32 | path = WeCenterMobile/External/SinaWeiboSDK 33 | url = https://github.com/sinaweibosdk/weibo_ios_sdk.git 34 | [submodule "WeCenterMobile/External/Msr"] 35 | path = WeCenterMobile/External/Msr 36 | url = https://github.com/MsrButterfly/Msr.LibSwift.git 37 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | osx_image: xcode7.1 2 | language: objective-c 3 | xcode_sdk: iphonesimulator 4 | xcode_project: WeCenterMobile.xcodeproj 5 | xcode_scheme: WeCenterMobile 6 | before_install: 7 | - git submodule update --init --recursive 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | WeCenterMobile-iOS [![Build Status](https://travis-ci.org/ifLab/WeCenterMobile-iOS.svg?branch=master)](https://travis-ci.org/ifLab/WeCenterMobile-iOS) 2 | ================== 3 | 4 | -------------------------------------------------------------------------------- /WeCenterMobile/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/7/14. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import AFNetworking 10 | import CoreData 11 | import DTCoreText 12 | import DTFoundation 13 | import SinaWeiboSDK 14 | import SVProgressHUD 15 | import UIKit 16 | import WeChatSDK 17 | 18 | let userStrings: (String) -> String = { 19 | return NSLocalizedString($0, tableName: "User", comment: "") 20 | } 21 | 22 | let discoveryStrings: (String) -> String = { 23 | return NSLocalizedString($0, tableName: "Discovery", comment: "") 24 | } 25 | 26 | let welcomeStrings: (String) -> String = { 27 | return NSLocalizedString($0, tableName: "Welcome", comment: "") 28 | } 29 | 30 | var appDelegate: AppDelegate { 31 | return UIApplication.sharedApplication().delegate as! AppDelegate 32 | } 33 | 34 | @UIApplicationMain 35 | class AppDelegate: UIResponder, UIApplicationDelegate { 36 | 37 | lazy var window: UIWindow? = { 38 | let v = UIWindow(frame: UIScreen.mainScreen().bounds) 39 | return v 40 | }() 41 | 42 | lazy var loginViewController: LoginViewController = { 43 | let vc = NSBundle.mainBundle().loadNibNamed("LoginViewController", owner: nil, options: nil).first as! LoginViewController 44 | return vc 45 | }() 46 | 47 | var cacheFileURL: NSURL { 48 | let directory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).last! 49 | let url = directory.URLByAppendingPathComponent("WeCenterMobile.sqlite") 50 | return url 51 | } 52 | 53 | var mainViewController: MainViewController! 54 | 55 | func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { 56 | // clearCaches() 57 | UIScrollView.msr_installPanGestureTranslationAdjustmentExtension() 58 | UIScrollView.msr_installTouchesCancellingExtension() 59 | AFNetworkActivityIndicatorManager.sharedManager().enabled = true 60 | DTAttributedTextContentView.setLayerClass(DTTiledLayerWithoutFade.self) 61 | SVProgressHUD.setDefaultMaskType(.Gradient) 62 | WeiboSDK.registerApp("3758958382") 63 | WXApi.registerApp("wx4dc4b980c462893b") 64 | NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateTheme", name: CurrentThemeDidChangeNotificationName, object: nil) 65 | updateTheme() 66 | window!.rootViewController = loginViewController 67 | window!.makeKeyAndVisible() 68 | return true 69 | } 70 | 71 | func applicationWillTerminate(application: UIApplication) { 72 | NSNotificationCenter.defaultCenter().removeObserver(self) 73 | try! DataManager.defaultManager!.saveChanges() 74 | } 75 | 76 | func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool { 77 | return WeiboSDK.handleOpenURL(url, delegate: nil) || WXApi.handleOpenURL(url, delegate: nil) 78 | } 79 | 80 | func clearCaches() { 81 | NetworkManager.clearCookies() 82 | do { 83 | try NSFileManager.defaultManager().removeItemAtURL(cacheFileURL) 84 | } catch _ { 85 | } 86 | DataManager.defaultManager = nil 87 | DataManager.temporaryManager = nil 88 | } 89 | 90 | func updateTheme() { 91 | let theme = SettingsManager.defaultManager.currentTheme 92 | mainViewController?.contentViewController.view.backgroundColor = theme.backgroundColorA 93 | UINavigationBar.appearance().barStyle = theme.navigationBarStyle 94 | UINavigationBar.appearance().tintColor = theme.navigationItemColor 95 | } 96 | 97 | } 98 | -------------------------------------------------------------------------------- /WeCenterMobile/Configuration.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Website 6 | http://wecenter.dev.hihwei.com/ 7 | Path 8 | 9 | Topic Detail 10 | api/topic/topic/ 11 | Topic Image 12 | uploads/topic/ 13 | User Topic List 14 | api/people/topics/ 15 | Topic Outstanding Answer List 16 | api/topic/topic_best_answer_list/ 17 | Focus Topic 18 | topic/ajax/focus_topic/ 19 | Answer Detail 20 | api/question/answer/ 21 | Explore List 22 | api/explore/ 23 | Upload Attachment 24 | api/publish/attach_upload/ 25 | Question Detail 26 | api/question/ 27 | Focus Question 28 | question/ajax/focus/ 29 | User Login 30 | api/account/login_process/ 31 | User UID 32 | api/account/get_uid/ 33 | User Basic Information 34 | api/profile.php/ 35 | User Extra Information 36 | api/account/get_userinfo/ 37 | User Registration 38 | api/account/register_process/ 39 | User Avatar 40 | uploads/avatar/ 41 | Upload User Avatar 42 | api/account/avatar_upload/ 43 | Follow User 44 | follow/ajax/follow_people/ 45 | User Following List 46 | api/people/follows/ 47 | User Follower List 48 | api/people/follows/ 49 | Answer Comment List 50 | api/question/answer_comments/ 51 | Article Comment List 52 | api/article/article_comments/ 53 | Article Detail 54 | api/article/ 55 | Update Profile 56 | api/people/profile_setting/ 57 | Home List 58 | api/home/ 59 | Hot Topic List 60 | api/topic/hot_topics/ 61 | User Question List 62 | api/people/user_actions/ 63 | User Answer List 64 | api/people/user_actions/ 65 | User Article List 66 | api/people/user_actions/ 67 | Post Answer Comment 68 | api/question/save_answer_comment/ 69 | Post Article Comment 70 | api/article/save_comment/ 71 | Post Question 72 | api/publish/publish_question/ 73 | Post Answer 74 | api/publish/save_answer/ 75 | Post Article 76 | api/publish/publish_article/ 77 | Evaluate Answer 78 | question/ajax/answer_vote/ 79 | Evaluate Article 80 | article/ajax/article_vote/ 81 | Search 82 | api/search/ 83 | 84 | App Secret 85 | 12884789df747d7affbcd6a7cadd9359 86 | Success Code 87 | 1 88 | Internal Error Code 89 | 23333 90 | 91 | 92 | -------------------------------------------------------------------------------- /WeCenterMobile/External/GBDeviceInfo.h: -------------------------------------------------------------------------------- 1 | // 2 | // GBDeviceInfo.h 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/14. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | #import "GBDeviceInfo/GBDeviceInfo/GBDeviceInfo_iOS.h" 12 | 13 | -------------------------------------------------------------------------------- /WeCenterMobile/External/WeChatSDK/WXApi.h: -------------------------------------------------------------------------------- 1 | // 2 | // WXApi.h 3 | // 所有Api接口 4 | // 5 | // Created by Wechat on 12-2-28. 6 | // Copyright (c) 2012年 Tencent. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "WXApiObject.h" 11 | 12 | 13 | #pragma mark - WXApiDelegate 14 | /*! @brief 接收并处理来自微信终端程序的事件消息 15 | * 16 | * 接收并处理来自微信终端程序的事件消息,期间微信界面会切换到第三方应用程序。 17 | * WXApiDelegate 会在handleOpenURL:delegate:中使用并触发。 18 | */ 19 | @protocol WXApiDelegate 20 | @optional 21 | 22 | /*! @brief 收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果 23 | * 24 | * 收到一个来自微信的请求,异步处理完成后必须调用sendResp发送处理结果给微信。 25 | * 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。 26 | * @param req 具体请求内容,是自动释放的 27 | */ 28 | -(void) onReq:(BaseReq*)req; 29 | 30 | 31 | 32 | /*! @brief 发送一个sendReq后,收到微信的回应 33 | * 34 | * 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。 35 | * 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。 36 | * @param resp具体的回应内容,是自动释放的 37 | */ 38 | -(void) onResp:(BaseResp*)resp; 39 | 40 | @end 41 | 42 | 43 | 44 | #pragma mark - WXApi 45 | 46 | /*! @brief 微信Api接口函数类 47 | * 48 | * 该类封装了微信终端SDK的所有接口 49 | */ 50 | @interface WXApi : NSObject 51 | 52 | /*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。 53 | * 54 | * 需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现。 55 | * iOS7及以上系统需要调起一次微信才会出现在微信的可用应用列表中。 56 | * @attention 请保证在主线程中调用此函数 57 | * @param appid 微信开发者ID 58 | * @return 成功返回YES,失败返回NO。 59 | */ 60 | +(BOOL) registerApp:(NSString *)appid; 61 | 62 | 63 | 64 | /*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。 65 | * 66 | * 需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现。 67 | * @see registerApp 68 | * @param appid 微信开发者ID 69 | * @param appdesc 应用附加信息,长度不超过1024字节 70 | * @return 成功返回YES,失败返回NO。 71 | */ 72 | +(BOOL) registerApp:(NSString *)appid withDescription:(NSString *)appdesc; 73 | 74 | 75 | 76 | /*! @brief 处理微信通过URL启动App时传递的数据 77 | * 78 | * 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。 79 | * @param url 微信启动第三方应用时传递过来的URL 80 | * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 81 | * @return 成功返回YES,失败返回NO。 82 | */ 83 | +(BOOL) handleOpenURL:(NSURL *) url delegate:(id) delegate; 84 | 85 | 86 | 87 | /*! @brief 检查微信是否已被用户安装 88 | * 89 | * @return 微信已安装返回YES,未安装返回NO。 90 | */ 91 | +(BOOL) isWXAppInstalled; 92 | 93 | 94 | 95 | /*! @brief 判断当前微信的版本是否支持OpenApi 96 | * 97 | * @return 支持返回YES,不支持返回NO。 98 | */ 99 | +(BOOL) isWXAppSupportApi; 100 | 101 | 102 | 103 | /*! @brief 获取微信的itunes安装地址 104 | * 105 | * @return 微信的安装地址字符串。 106 | */ 107 | +(NSString *) getWXAppInstallUrl; 108 | 109 | 110 | 111 | /*! @brief 获取当前微信SDK的版本号 112 | * 113 | * @return 返回当前微信SDK的版本号 114 | */ 115 | +(NSString *) getApiVersion; 116 | 117 | 118 | 119 | /*! @brief 打开微信 120 | * 121 | * @return 成功返回YES,失败返回NO。 122 | */ 123 | +(BOOL) openWXApp; 124 | 125 | 126 | 127 | /*! @brief 发送请求到微信,等待微信返回onResp 128 | * 129 | * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型 130 | * SendAuthReq、SendMessageToWXReq、PayReq等。 131 | * @param req 具体的发送请求,在调用函数后,请自己释放。 132 | * @return 成功返回YES,失败返回NO。 133 | */ 134 | +(BOOL) sendReq:(BaseReq*)req; 135 | 136 | /*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp 137 | * 138 | * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。 139 | * @param req 具体的发送请求,在调用函数后,请自己释放。 140 | * @param viewController 当前界面对象。 141 | * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 142 | * @return 成功返回YES,失败返回NO。 143 | */ 144 | +(BOOL) sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*) viewController delegate:(id) delegate; 145 | 146 | 147 | /*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面 148 | * 149 | * 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有 150 | * GetMessageFromWXResp、ShowMessageFromWXResp等。 151 | * @param resp 具体的应答内容,调用函数后,请自己释放 152 | * @return 成功返回YES,失败返回NO。 153 | */ 154 | +(BOOL) sendResp:(BaseResp*)resp; 155 | 156 | 157 | @end 158 | -------------------------------------------------------------------------------- /WeCenterMobile/External/WeChatSDK/WeChatSDK.h: -------------------------------------------------------------------------------- 1 | // 2 | // WeChatSDK.h 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/6/26. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | @import UIKit; 10 | 11 | #import "WXApi.h" 12 | #import "WXApiObject.h" 13 | -------------------------------------------------------------------------------- /WeCenterMobile/External/WeChatSDK/WechatAuthSDK.h: -------------------------------------------------------------------------------- 1 | // 2 | // WechatAuthSDK.h 3 | // WechatAuthSDK 4 | // 5 | // Created by 李凯 on 13-11-29. 6 | // Copyright (c) 2013年 Tencent. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | enum AuthErrCode { 13 | WechatAuth_Err_Ok = 0, //Auth成功 14 | WechatAuth_Err_NormalErr = -1, //普通错误 15 | WechatAuth_Err_NetworkErr = -2, //网络错误 16 | WechatAuth_Err_GetQrcodeFailed = -3, //获取二维码失败 17 | WechatAuth_Err_Cancel = -4, //用户取消授权 18 | WechatAuth_Err_Timeout = -5, //超时 19 | }; 20 | 21 | @protocol WechatAuthAPIDelegate 22 | @optional 23 | 24 | - (void)onAuthGotQrcode:(UIImage *)image; //得到二维码 25 | - (void)onQrcodeScanned; //二维码被扫描 26 | - (void)onAuthFinish:(int)errCode AuthCode:(NSString *)authCode; //成功登录 27 | 28 | @end 29 | 30 | @interface WechatAuthSDK : NSObject{ 31 | NSString *_sdkVersion; 32 | __weak id _delegate; 33 | } 34 | 35 | @property(nonatomic, weak) id delegate; 36 | @property(nonatomic, readonly) NSString *sdkVersion; //authSDK版本号 37 | 38 | /*! @brief 发送登录请求,等待WechatAuthAPIDelegate回调 39 | * 40 | * @param appId 微信开发者ID 41 | * @param nonceStr 一个随机的尽量不重复的字符串,用来使得每次的signature不同 42 | * @param timeStamp 时间戳 43 | * @param scope 应用授权作用域,拥有多个作用域用逗号(,)分隔 44 | * @param signature 签名 45 | * @param schemeData 会在扫码后拼在scheme后 46 | * @return 成功返回YES,失败返回NO 47 | 注:该实现只保证同时只有一个Auth在运行,Auth未完成或未Stop再次调用Auth接口时会返回NO。 48 | */ 49 | 50 | - (BOOL)Auth:(NSString *)appId 51 | nonceStr:(NSString *)nonceStr 52 | timeStamp:(NSString*)timeStamp 53 | scope:(NSString *)scope 54 | signature:(NSString *)signature 55 | schemeData:(NSString *)schemeData; 56 | 57 | 58 | /*! @brief 暂停登录请求 59 | * 60 | * @return 成功返回YES,失败返回NO。 61 | */ 62 | - (BOOL)StopAuth; 63 | 64 | @end 65 | -------------------------------------------------------------------------------- /WeCenterMobile/External/WeChatSDK/libWeChatSDK.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/External/WeChatSDK/libWeChatSDK.a -------------------------------------------------------------------------------- /WeCenterMobile/External/module.modulemap: -------------------------------------------------------------------------------- 1 | module AFNetworking { 2 | 3 | requires objc, objc_arc 4 | 5 | use UIKit 6 | 7 | header "AFNetworking/AFNetworking/AFNetworking.h" 8 | header "AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h" 9 | 10 | } 11 | 12 | module AFViewShaker { 13 | 14 | requires objc, objc_arc 15 | 16 | use UIKit 17 | 18 | header "AFViewShaker/AFViewShaker/AFViewShaker.h" 19 | 20 | } 21 | 22 | module EAColourfulProgressView { 23 | 24 | requires objc, objc_arc 25 | 26 | use UIKit 27 | 28 | umbrella header "EAColourfulProgressView/EAColourfulProgressView/EAColourfulProgressView.h" 29 | 30 | } 31 | 32 | module GBDeviceInfo { 33 | 34 | requires objc, objc_arc 35 | 36 | use UIKit 37 | 38 | header "GBDeviceInfo.h" 39 | 40 | } 41 | 42 | module MJRefresh { 43 | 44 | requires objc, objc_arc 45 | 46 | use UIKit 47 | 48 | umbrella header "MJRefresh/MJRefresh/MJRefresh.h" 49 | header "MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h" 50 | header "MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h" 51 | header "MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h" 52 | header "MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h" 53 | header "MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h" 54 | header "MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h" 55 | header "MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h" 56 | header "MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h" 57 | header "MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h" 58 | 59 | } 60 | 61 | module RMDateSelectionViewController { 62 | 63 | requires objc, objc_arc 64 | 65 | use UIKit 66 | use QuartzCore 67 | 68 | header "RMActionController/RMActionController/RMActionController.h" 69 | header "RMDateSelectionViewController/RMDateSelectionViewController/RMDateSelectionViewController.h" 70 | 71 | } 72 | 73 | module SinaWeiboSDK { 74 | 75 | requires objc, objc_arc 76 | 77 | use UIKit 78 | 79 | umbrella header "SinaWeiboSDK/libWeiboSDK/WeiboSDK.h" 80 | header "SinaWeiboSDK/libWeiboSDK/WeiboUser.h" 81 | 82 | link "WeiboSDK" 83 | 84 | } 85 | 86 | module WeChatSDK { 87 | 88 | requires objc, objc_arc 89 | 90 | use UIKit 91 | 92 | umbrella header "WeChatSDK/WeChatSDK.h" 93 | header "WeChatSDK/WechatAuthSDK.h" 94 | 95 | link "WeChatSDK" 96 | 97 | } 98 | 99 | module ZFTokenField { 100 | 101 | requires objc, objc_arc 102 | 103 | use UIKit 104 | 105 | umbrella header "ZFTokenField/Classes/ZFTokenField.h" 106 | 107 | } 108 | -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-Small@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-Small@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "40x40", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-40@2x.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "40x40", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-40@3x.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "60x60", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-60@2x.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "60x60", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-60@3x.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "29x29", 41 | "idiom" : "ipad", 42 | "filename" : "Icon-Small.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "29x29", 47 | "idiom" : "ipad", 48 | "filename" : "Icon-Small@2x-1.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "40x40", 53 | "idiom" : "ipad", 54 | "filename" : "Icon-40.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "40x40", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-40@2x-1.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "76x76", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-76.png", 67 | "scale" : "1x" 68 | }, 69 | { 70 | "size" : "76x76", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-76@2x.png", 73 | "scale" : "2x" 74 | }, 75 | { 76 | "idiom" : "ipad", 77 | "size" : "83.5x83.5", 78 | "scale" : "2x" 79 | } 80 | ], 81 | "info" : { 82 | "version" : 1, 83 | "author" : "xcode" 84 | } 85 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40@2x-1.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Comment/Comment-Button.imageset/Comment-Button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Comment/Comment-Button.imageset/Comment-Button.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Comment/Comment-Button.imageset/Comment-Button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Comment/Comment-Button.imageset/Comment-Button@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Comment/Comment-Button.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Comment-Button.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Comment-Button@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Evaluation-Dislike-Highlighted.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Evaluation-Dislike-Highlighted@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Evaluation-Dislike-Highlighted@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Highlighted.imageset/Evaluation-Dislike-Highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Highlighted.imageset/Evaluation-Dislike-Highlighted.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Highlighted.imageset/Evaluation-Dislike-Highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Highlighted.imageset/Evaluation-Dislike-Highlighted@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Highlighted.imageset/Evaluation-Dislike-Highlighted@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Highlighted.imageset/Evaluation-Dislike-Highlighted@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Evaluation-Dislike-Normal.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Evaluation-Dislike-Normal@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Evaluation-Dislike-Normal@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Normal.imageset/Evaluation-Dislike-Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Normal.imageset/Evaluation-Dislike-Normal.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Normal.imageset/Evaluation-Dislike-Normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Normal.imageset/Evaluation-Dislike-Normal@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Normal.imageset/Evaluation-Dislike-Normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Dislike-Normal.imageset/Evaluation-Dislike-Normal@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Highlighted.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Evaluation-Like-Highlighted.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Evaluation-Like-Highlighted@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Evaluation-Like-Highlighted@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Highlighted.imageset/Evaluation-Like-Highlighted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Highlighted.imageset/Evaluation-Like-Highlighted.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Highlighted.imageset/Evaluation-Like-Highlighted@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Highlighted.imageset/Evaluation-Like-Highlighted@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Highlighted.imageset/Evaluation-Like-Highlighted@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Highlighted.imageset/Evaluation-Like-Highlighted@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Normal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Evaluation-Like-Normal.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Evaluation-Like-Normal@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Evaluation-Like-Normal@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Normal.imageset/Evaluation-Like-Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Normal.imageset/Evaluation-Like-Normal.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Normal.imageset/Evaluation-Like-Normal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Normal.imageset/Evaluation-Like-Normal@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Normal.imageset/Evaluation-Like-Normal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Evaluation/Evaluation-Like-Normal.imageset/Evaluation-Like-Normal@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "extent" : "full-screen", 14 | "minimum-system-version" : "7.0", 15 | "subtype" : "retina4", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "orientation" : "portrait", 20 | "idiom" : "ipad", 21 | "extent" : "full-screen", 22 | "minimum-system-version" : "7.0", 23 | "scale" : "1x" 24 | }, 25 | { 26 | "orientation" : "landscape", 27 | "idiom" : "ipad", 28 | "extent" : "full-screen", 29 | "minimum-system-version" : "7.0", 30 | "scale" : "1x" 31 | }, 32 | { 33 | "orientation" : "portrait", 34 | "idiom" : "ipad", 35 | "extent" : "full-screen", 36 | "minimum-system-version" : "7.0", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "orientation" : "landscape", 41 | "idiom" : "ipad", 42 | "extent" : "full-screen", 43 | "minimum-system-version" : "7.0", 44 | "scale" : "2x" 45 | } 46 | ], 47 | "info" : { 48 | "version" : 1, 49 | "author" : "xcode" 50 | } 51 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Background.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Login-Background.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Background.imageset/Login-Background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-Background.imageset/Login-Background.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Mail.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Login-Mail.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Login-Mail@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Login-Mail@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Mail.imageset/Login-Mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-Mail.imageset/Login-Mail.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Mail.imageset/Login-Mail@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-Mail.imageset/Login-Mail@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Mail.imageset/Login-Mail@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-Mail.imageset/Login-Mail@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Password.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Login-Password.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Login-Password@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Login-Password@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Password.imageset/Login-Password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-Password.imageset/Login-Password.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Password.imageset/Login-Password@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-Password.imageset/Login-Password@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-Password.imageset/Login-Password@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-Password.imageset/Login-Password@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-User.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Login-User.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Login-User@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Login-User@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-User.imageset/Login-User.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-User.imageset/Login-User.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-User.imageset/Login-User@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-User.imageset/Login-User@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Login/Login-User.imageset/Login-User@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Login/Login-User.imageset/Login-User@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Navigation/Navigation-Back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Navigation-Back.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Navigation-Back@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Navigation/Navigation-Back.imageset/Navigation-Back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Navigation/Navigation-Back.imageset/Navigation-Back.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Navigation/Navigation-Back.imageset/Navigation-Back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Navigation/Navigation-Back.imageset/Navigation-Back@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Navigation/Navigation-Root.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Navigation-Root.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Navigation-Root@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Navigation/Navigation-Root.imageset/Navigation-Root.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Navigation/Navigation-Root.imageset/Navigation-Root.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Navigation/Navigation-Root.imageset/Navigation-Root@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Navigation/Navigation-Root.imageset/Navigation-Root@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Answer.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Publishment-Answer.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Publishment-Answer@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Answer.imageset/Publishment-Answer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Publishment/Publishment-Answer.imageset/Publishment-Answer.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Answer.imageset/Publishment-Answer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Publishment/Publishment-Answer.imageset/Publishment-Answer@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Article_Question.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Publishment-Article_Question.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Publishment-Article_Question@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Article_Question.imageset/Publishment-Article_Question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Publishment/Publishment-Article_Question.imageset/Publishment-Article_Question.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Article_Question.imageset/Publishment-Article_Question@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Publishment/Publishment-Article_Question.imageset/Publishment-Article_Question@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Attachment.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x", 10 | "filename" : "Publishment-Attachment@2x.png" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x", 15 | "filename" : "Publishment-Attachment@3x.png" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Attachment.imageset/Publishment-Attachment@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Publishment/Publishment-Attachment.imageset/Publishment-Attachment@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Publishment/Publishment-Attachment.imageset/Publishment-Attachment@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Publishment/Publishment-Attachment.imageset/Publishment-Attachment@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Question/Question-Bookmark.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Question-Bookmark.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Question-Bookmark@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Question-Bookmark@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Question/Question-Bookmark.imageset/Question-Bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Question/Question-Bookmark.imageset/Question-Bookmark.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Question/Question-Bookmark.imageset/Question-Bookmark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Question/Question-Bookmark.imageset/Question-Bookmark@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Question/Question-Bookmark.imageset/Question-Bookmark@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Question/Question-Bookmark.imageset/Question-Bookmark@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Question/Question-Focus.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Question-Focus.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Question-Focus@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Question/Question-Focus.imageset/Question-Focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Question/Question-Focus.imageset/Question-Focus.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Question/Question-Focus.imageset/Question-Focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Question/Question-Focus.imageset/Question-Focus@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-Button.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Share-Button.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Share-Button@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-Button.imageset/Share-Button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-Button.imageset/Share-Button.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-Button.imageset/Share-Button@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-Button.imageset/Share-Button@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-SinaWeibo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Share-SinaWeibo.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Share-SinaWeibo@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Share-SinaWeibo@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-SinaWeibo.imageset/Share-SinaWeibo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-SinaWeibo.imageset/Share-SinaWeibo.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-SinaWeibo.imageset/Share-SinaWeibo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-SinaWeibo.imageset/Share-SinaWeibo@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-SinaWeibo.imageset/Share-SinaWeibo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-SinaWeibo.imageset/Share-SinaWeibo@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatMoments.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Share-WeChatMoments.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Share-WeChatMoments@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Share-WeChatMoments@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatMoments.imageset/Share-WeChatMoments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-WeChatMoments.imageset/Share-WeChatMoments.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatMoments.imageset/Share-WeChatMoments@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-WeChatMoments.imageset/Share-WeChatMoments@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatMoments.imageset/Share-WeChatMoments@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-WeChatMoments.imageset/Share-WeChatMoments@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatSession.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Share-WeChatSession.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Share-WeChatSession@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "Share-WeChatSession@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatSession.imageset/Share-WeChatSession.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-WeChatSession.imageset/Share-WeChatSession.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatSession.imageset/Share-WeChatSession@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-WeChatSession.imageset/Share-WeChatSession@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Share/Share-WeChatSession.imageset/Share-WeChatSession@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Share/Share-WeChatSession.imageset/Share-WeChatSession@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-About.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-About.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-About@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-About.imageset/Sidebar-About.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-About.imageset/Sidebar-About.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-About.imageset/Sidebar-About@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-About.imageset/Sidebar-About@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Background.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Background.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Background.imageset/Sidebar-Background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Background.imageset/Sidebar-Background.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Drafts.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Drafts.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-Drafts@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Drafts.imageset/Sidebar-Drafts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Drafts.imageset/Sidebar-Drafts.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Drafts.imageset/Sidebar-Drafts@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Drafts.imageset/Sidebar-Drafts@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Explore.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Explore.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-Explore@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Explore.imageset/Sidebar-Explore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Explore.imageset/Sidebar-Explore.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Explore.imageset/Sidebar-Explore@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Explore.imageset/Sidebar-Explore@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-History.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-History.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-History@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-History.imageset/Sidebar-History.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-History.imageset/Sidebar-History.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-History.imageset/Sidebar-History@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-History.imageset/Sidebar-History@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Home.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Home.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-Home@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Home.imageset/Sidebar-Home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Home.imageset/Sidebar-Home.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Home.imageset/Sidebar-Home@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Home.imageset/Sidebar-Home@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Publishment.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Publishment.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-Publishment@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Publishment.imageset/Sidebar-Publishment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Publishment.imageset/Sidebar-Publishment.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Publishment.imageset/Sidebar-Publishment@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Publishment.imageset/Sidebar-Publishment@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-ReadingList.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-ReadingList.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-ReadingList@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-ReadingList.imageset/Sidebar-ReadingList.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-ReadingList.imageset/Sidebar-ReadingList.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-ReadingList.imageset/Sidebar-ReadingList@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-ReadingList.imageset/Sidebar-ReadingList@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Search.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Search.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-Search@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Search.imageset/Sidebar-Search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Search.imageset/Sidebar-Search.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Search.imageset/Sidebar-Search@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Search.imageset/Sidebar-Search@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Settings.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Settings.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-Settings@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Settings.imageset/Sidebar-Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Settings.imageset/Sidebar-Settings.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Settings.imageset/Sidebar-Settings@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Settings.imageset/Sidebar-Settings@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Test.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-Test.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-Test@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Test.imageset/Sidebar-Test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Test.imageset/Sidebar-Test.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Test.imageset/Sidebar-Test@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Test.imageset/Sidebar-Test@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Topic.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Sidebar-Topic.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Sidebar-Topic-1.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Topic.imageset/Sidebar-Topic-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Topic.imageset/Sidebar-Topic-1.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Topic.imageset/Sidebar-Topic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-Topic.imageset/Sidebar-Topic.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-User.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Sidebar-User.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "Sidebar-User@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode", 21 | "template-rendering-intent" : "template" 22 | } 23 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-User.imageset/Sidebar-User.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-User.imageset/Sidebar-User.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Sidebar/Sidebar-User.imageset/Sidebar-User@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Sidebar/Sidebar-User.imageset/Sidebar-User@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Topic/Topic-DefaultImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "Topic-DefaultImage.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/Topic/Topic-DefaultImage.imageset/Topic-DefaultImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/Topic/Topic-DefaultImage.imageset/Topic-DefaultImage.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Female.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-Gender-Female.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "User-Gender-Female@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "User-Gender-Female@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Female.imageset/User-Gender-Female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Female.imageset/User-Gender-Female.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Female.imageset/User-Gender-Female@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Female.imageset/User-Gender-Female@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Female.imageset/User-Gender-Female@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Female.imageset/User-Gender-Female@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Male.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-Gender-Male.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "User-Gender-Male@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "User-Gender-Male@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Male.imageset/User-Gender-Male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Male.imageset/User-Gender-Male.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Male.imageset/User-Gender-Male@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Male.imageset/User-Gender-Male@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Male.imageset/User-Gender-Male@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Gender/User-Gender-Male.imageset/User-Gender-Male@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Agreement.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-Header-Agreement.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "User-Header-Agreement@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "User-Header-Agreement@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Agreement.imageset/User-Header-Agreement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Agreement.imageset/User-Header-Agreement.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Agreement.imageset/User-Header-Agreement@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Agreement.imageset/User-Header-Agreement@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Agreement.imageset/User-Header-Agreement@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Agreement.imageset/User-Header-Agreement@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Like.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-Header-Like.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "User-Header-Like@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "User-Header-Like@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Like.imageset/User-Header-Like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Like.imageset/User-Header-Like.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Like.imageset/User-Header-Like@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Like.imageset/User-Header-Like@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Like.imageset/User-Header-Like@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Like.imageset/User-Header-Like@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Star.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-Header-Star.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "User-Header-Star@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "User-Header-Star@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Star.imageset/User-Header-Star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Star.imageset/User-Header-Star.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Star.imageset/User-Header-Star@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Star.imageset/User-Header-Star@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Star.imageset/User-Header-Star@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Star.imageset/User-Header-Star@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Thank.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-Header-Thank.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "User-Header-Thank@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "User-Header-Thank@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode", 22 | "template-rendering-intent" : "template" 23 | } 24 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Thank.imageset/User-Header-Thank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Thank.imageset/User-Header-Thank.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Thank.imageset/User-Header-Thank@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Thank.imageset/User-Header-Thank@2x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/Header/User-Header-Thank.imageset/User-Header-Thank@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/Header/User-Header-Thank.imageset/User-Header-Thank@3x.png -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/User-DefaultAvatar.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "User-DefaultAvatar.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /WeCenterMobile/Images.xcassets/User/User-DefaultAvatar.imageset/User-DefaultAvatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ifLab/WeCenterMobile-iOS/85259571b27683b54dae4b88183515369d24e32d/WeCenterMobile/Images.xcassets/User/User-DefaultAvatar.imageset/User-DefaultAvatar.png -------------------------------------------------------------------------------- /WeCenterMobile/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIcons 10 | 11 | CFBundleIcons~ipad 12 | 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | $(PRODUCT_NAME) 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleURLTypes 26 | 27 | 28 | CFBundleTypeRole 29 | Editor 30 | CFBundleURLName 31 | WeChat 32 | CFBundleURLSchemes 33 | 34 | wx4dc4b980c462893b 35 | 36 | 37 | 38 | CFBundleTypeRole 39 | Editor 40 | CFBundleURLName 41 | SinaWeibo 42 | CFBundleURLSchemes 43 | 44 | 3758958382 45 | 46 | 47 | 48 | CFBundleVersion 49 | 1 50 | LSApplicationQueriesSchemes 51 | 52 | sinaweibo 53 | sinaweibohd 54 | weibosdk 55 | weibosdk2.5 56 | weixin 57 | 58 | LSRequiresIPhoneOS 59 | 60 | NSAppTransportSecurity 61 | 62 | NSAllowsArbitraryLoads 63 | 64 | 65 | UILaunchStoryboardName 66 | LaunchScreen 67 | UIRequiredDeviceCapabilities 68 | 69 | armv7 70 | 71 | UIStatusBarHidden 72 | 73 | UISupportedInterfaceOrientations 74 | 75 | UIInterfaceOrientationPortrait 76 | 77 | UISupportedInterfaceOrientations~ipad 78 | 79 | UIInterfaceOrientationPortrait 80 | UIInterfaceOrientationPortraitUpsideDown 81 | UIInterfaceOrientationLandscapeLeft 82 | UIInterfaceOrientationLandscapeRight 83 | 84 | UIViewControllerBasedStatusBarAppearance 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/en.lproj/Discovery.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Discovery.strings 3 | WeCenterMobile 4 | 5 | Created by Darren Liu on 14/8/1. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Title */ 10 | "Discovery" = "Discovery"; 11 | 12 | /* Hot activity list */ 13 | "Hot" = "Hot"; 14 | 15 | /* New activity list */ 16 | "New" = "New"; 17 | 18 | /* Unanswered activity list */ 19 | "Unanswered" = "Unanswered"; 20 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/en.lproj/User.strings: -------------------------------------------------------------------------------- 1 | /* 2 | User.strings 3 | WeCenterMobile 4 | 5 | Created by EricLee on 14-8-4. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Edit */ 10 | "Edit" = "Edit"; 11 | 12 | /* My topics button */ 13 | "My topics" = "My topics"; 14 | 15 | /* His topics button */ 16 | "His topics" = "His/Her topics"; 17 | 18 | /* My following button */ 19 | "My following" = "Following"; 20 | 21 | /* His following button */ 22 | "His following" = "Following"; 23 | 24 | /* My follower button */ 25 | "My follower" = "Follower"; 26 | 27 | /* His follower button */ 28 | "His follower" = "Follower"; 29 | 30 | /* Male */ 31 | "Male" = "Male"; 32 | 33 | /* Female */ 34 | "Female" = "Female"; 35 | 36 | /* Secret */ 37 | "Secret" = "Secret"; 38 | 39 | /* Article button */ 40 | "Article" = "Article"; 41 | 42 | /* Answered button */ 43 | "Answered" = "Answered"; 44 | 45 | /* Asked button */ 46 | "Asked" = "Asked"; 47 | 48 | /* Activity cell */ 49 | "Activity" = "Activity"; 50 | 51 | /* Find friends cell */ 52 | "Find friends" = "Find friends"; 53 | 54 | /* User profile view controller */ 55 | "Profile" = "Profile"; 56 | 57 | /* Name */ 58 | "Name" = "Name"; 59 | 60 | /* Gender */ 61 | "Gender" = "Gender"; 62 | 63 | /* Introduction */ 64 | "Introduction" = "Introduction"; 65 | 66 | /* Birthday */ 67 | "Birthday" = "Birthday"; 68 | 69 | /* Other informations */ 70 | "Other informations" = "Other informations"; 71 | 72 | /* Edit list view controller */ 73 | "Edit" = "Edit"; 74 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/en.lproj/Welcome.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Welcome.strings 3 | WeCenterMobile 4 | 5 | Created by Darren Liu on 14/7/14. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Login button title */ 10 | "Login" = "Login"; 11 | 12 | /* Register button title */ 13 | "Register" = "Register"; 14 | 15 | /* Username placeholder */ 16 | "Username" = "Username"; 17 | 18 | /* Password placeholder */ 19 | "Password" = "Password"; 20 | 21 | /* Cancel button title */ 22 | "Cancel" = "Cancel"; 23 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/zh-Hans.lproj/Discovery.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Discovery.strings 3 | WeCenterMobile 4 | 5 | Created by Darren Liu on 14/8/1. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Title */ 10 | "Discovery" = "发现"; 11 | 12 | /* Hot activity list */ 13 | "Hot" = "热门"; 14 | 15 | /* New activity list */ 16 | "New" = "最新"; 17 | 18 | /* Unanswered activity list */ 19 | "Unanswered" = "尚未回答"; 20 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/zh-Hans.lproj/User.strings: -------------------------------------------------------------------------------- 1 | /* 2 | User.strings 3 | WeCenterMobile 4 | 5 | Created by EricLee on 14-8-4. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Edit */ 10 | "Edit" = "编辑"; 11 | 12 | /* My topics button */ 13 | "My topics" = "我的话题"; 14 | 15 | /* His topics button */ 16 | "His topics" = "他/她的话题"; 17 | 18 | /* My following button */ 19 | "My following" = "我关注的"; 20 | 21 | /* His following button */ 22 | "His following" = "他/她关注的"; 23 | 24 | /* My follower button */ 25 | "My follower" = "关注我的"; 26 | 27 | /* His follower button */ 28 | "His follower" = "关注他/她的"; 29 | 30 | /* Male */ 31 | "Male" = "男"; 32 | 33 | /* Female */ 34 | "Female" = "女"; 35 | 36 | /* Secret */ 37 | "Secret" = "保密"; 38 | 39 | /* Article button */ 40 | "Article" = "文章"; 41 | 42 | /* Answered button */ 43 | "Answered" = "回答"; 44 | 45 | /* Asked button */ 46 | "Asked" = "提问"; 47 | 48 | /* Activity cell */ 49 | "Activity" = "活动"; 50 | 51 | /* Find friends cell */ 52 | "Find friends" = "查找朋友"; 53 | 54 | /* User profile view controller */ 55 | "Profile" = "个人中心"; 56 | 57 | /* Name */ 58 | "Name" = "姓名"; 59 | 60 | /* Gender */ 61 | "Gender" = "性别"; 62 | 63 | /* Introduction */ 64 | "Introduction" = "介绍"; 65 | 66 | /* Birthday */ 67 | "Birthday" = "生日"; 68 | 69 | /* Other informations */ 70 | "Other informations" = "其他信息"; 71 | 72 | /* Edit list view controller */ 73 | "Edit" = "修改"; 74 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/zh-Hans.lproj/Welcome.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Welcome.strings 3 | WeCenterMobile 4 | 5 | Created by Darren Liu on 14/7/14. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Login button title */ 10 | "Login" = "登录"; 11 | 12 | /* Register button title */ 13 | "Register" = "注册"; 14 | 15 | /* Username placeholder */ 16 | "Username" = "用户名"; 17 | 18 | /* Password placeholder */ 19 | "Password" = "密码"; 20 | 21 | /* Cancel button title */ 22 | "Cancel" = "取消"; 23 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/zh-Hant.lproj/Discovery.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Discovery.strings 3 | WeCenterMobile 4 | 5 | Created by Darren Liu on 14/8/1. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Title */ 10 | "Discovery" = "探索"; 11 | 12 | /* Hot activity list */ 13 | "Hot" = "熱門"; 14 | 15 | /* New activity list */ 16 | "New" = "最新"; 17 | 18 | /* Unanswered activity list */ 19 | "Unanswered" = "尚無回覆"; 20 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/zh-Hant.lproj/User.strings: -------------------------------------------------------------------------------- 1 | /* 2 | User.strings 3 | WeCenterMobile 4 | 5 | Created by EricLee on 14-8-4. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Edit */ 10 | "Edit" = "修改"; 11 | 12 | /* My topics button */ 13 | "My topics" = "我的話題"; 14 | 15 | /* His topics button */ 16 | "His topics" = "他/她的話題"; 17 | 18 | /* My following button */ 19 | "My following" = "我關注的"; 20 | 21 | /* His following button */ 22 | "His following" = "他/她關注的"; 23 | 24 | /* My follower button */ 25 | "My follower" = "關注我的"; 26 | 27 | /* His follower button */ 28 | "His follower" = "關注他/她的"; 29 | 30 | /* Male */ 31 | "Male" = "男"; 32 | 33 | /* Female */ 34 | "Female" = "女"; 35 | 36 | /* Secret */ 37 | "Secret" = "保密"; 38 | 39 | /* Article button */ 40 | "Article" = "文章"; 41 | 42 | /* Answered button */ 43 | "Answered" = "回答"; 44 | 45 | /* Asked button */ 46 | "Asked" = "提問"; 47 | 48 | /* Activity cell */ 49 | "Activity" = "活動"; 50 | 51 | /* Find friends cell */ 52 | "Find friends" = "查找朋友"; 53 | 54 | /* User profile view controller */ 55 | "Profile" = "個人中心"; 56 | 57 | /* Name */ 58 | "Name" = "姓名"; 59 | 60 | /* Gender */ 61 | "Gender" = "性別"; 62 | 63 | /* Introduction */ 64 | "Introduction" = "介紹"; 65 | 66 | /* Birthday */ 67 | "Birthday" = "生日"; 68 | 69 | /* Other informations */ 70 | "Other informations" = "其他信息"; 71 | 72 | /* Edit list view controller */ 73 | "Edit" = "修改"; 74 | -------------------------------------------------------------------------------- /WeCenterMobile/Localization/zh-Hant.lproj/Welcome.strings: -------------------------------------------------------------------------------- 1 | /* 2 | Welcome.strings 3 | WeCenterMobile 4 | 5 | Created by Darren Liu on 14/7/14. 6 | Copyright (c) 2014年 ifLab. All rights reserved. 7 | */ 8 | 9 | /* Login button title */ 10 | "Login" = "登錄"; 11 | 12 | /* Register button title */ 13 | "Register" = "註冊"; 14 | 15 | /* Username placeholder */ 16 | "Username" = "用戶名"; 17 | 18 | /* Password placeholder */ 19 | "Password" = "密碼"; 20 | 21 | /* Cancel button title */ 22 | "Cancel" = "取消"; 23 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/Action.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Action.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/10/7. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | enum ActionTypeID: Int { 13 | case QuestionPublishment = 101 14 | case QuestionFocusing = 105 15 | case Answer = 201 16 | case AnswerAgreement = 204 17 | case ArticlePublishment = 501 18 | case ArticleAgreement = 502 19 | case ArticleCommentary = 503 20 | } 21 | 22 | class Action: DataObject { 23 | 24 | @NSManaged var date: NSDate? 25 | @NSManaged var user: User? 26 | 27 | } 28 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/AnswerAction.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerAction.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/10/7. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class AnswerAction: Action { 13 | 14 | @NSManaged var answer: Answer? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/AnswerAgreementAction.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerAgreementAction.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/10/7. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class AnswerAgreementAction: Action { 13 | 14 | @NSManaged var answer: Answer? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/AnswerComment.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerComment.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/11/26. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class AnswerComment: Comment { 13 | 14 | @NSManaged var answer: Answer? 15 | 16 | override func post(success success: (() -> Void)?, failure: ((NSError) -> Void)?) { 17 | super.post(success: success, failure: failure) 18 | var body = self.body! 19 | if let user = atUser { 20 | body = "@" + user.name! + ":" + body 21 | } 22 | NetworkManager.defaultManager!.POST("Post Answer Comment", 23 | parameters: ["answer_id": answer!.id, 24 | "message": body], 25 | success: { 26 | _ in 27 | success?() 28 | return 29 | }, 30 | failure: failure) 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/ArticleAgreementAction.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleAgreementAction.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/10/7. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class ArticleAgreementAction: Action { 13 | 14 | @NSManaged var article: Article? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/ArticleComment.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleComment.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/11/26. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class ArticleComment: Comment { 13 | 14 | @NSManaged var article: Article? 15 | @NSManaged var agreementCount: NSNumber? 16 | @NSManaged var articleCommentaryActions: Set 17 | 18 | var evaluation: Evaluation? 19 | 20 | override func post(success success: (() -> Void)?, failure: ((NSError) -> Void)?) { 21 | super.post(success: success, failure: failure) 22 | var parameters = [ 23 | "article_id": article!.id, 24 | "message": body!] 25 | if atUser != nil { 26 | parameters["at_uid"] = atUser!.id 27 | } 28 | NetworkManager.defaultManager!.POST("Post Article Comment", 29 | parameters: parameters, 30 | success: { 31 | _ in 32 | success?() 33 | return 34 | }, 35 | failure: failure) 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/ArticleCommentaryAction.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleCommentaryAction.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Bill Hu on 15/12/3. 6 | // Copyright © 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class ArticleCommentaryAction: Action { 13 | 14 | @NSManaged var comment: ArticleComment? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/ArticlePublishmentAction.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticlePublishmentAction.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/10/7. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class ArticlePublishmentAction: Action { 13 | 14 | @NSManaged var article: Article? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/Comment.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Comment.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/4. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class Comment: DataObject { 13 | 14 | @NSManaged var atID: NSNumber? 15 | @NSManaged var body: String? 16 | @NSManaged var date: NSDate? 17 | @NSManaged var atUser: User? 18 | @NSManaged var user: User? 19 | 20 | func post(success success: (() -> Void)?, failure: ((NSError) -> Void)?) {} 21 | 22 | } 23 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/DataObject.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DataObject.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/8. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | enum SearchType: String { 13 | case All = "all" 14 | case Article = "articles" 15 | case Question = "questions" 16 | case Topic = "topics" 17 | case User = "users" 18 | } 19 | 20 | class DataObject: NSManagedObject { 21 | 22 | @NSManaged var id: NSNumber! 23 | 24 | private class func cast(object: NSManagedObject, type: T.Type) -> T { 25 | return object as! T 26 | } 27 | 28 | class func cachedObjectWithID(ID: NSNumber) -> Self { 29 | return cast(DataManager.defaultManager!.autoGenerate(entityName, ID: ID), type: self) 30 | } 31 | 32 | class func allCachedObjects() -> [DataObject] /* [Self] in not supported. */ { 33 | return try! DataManager.defaultManager!.fetchAll(entityName) 34 | } 35 | 36 | class func deleteAllCachedObjects() { 37 | try! DataManager.defaultManager!.deleteAllObjectsWithEntityName(entityName) 38 | } 39 | 40 | class func temporaryObject() -> Self { 41 | return cast(DataManager.temporaryManager!.create(entityName), type: self) 42 | } 43 | 44 | class var entityName: String { 45 | let s = NSStringFromClass(self) 46 | return s.characters.split { $0 == "." }.map { String($0) }.last ?? s 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/FeaturedArticle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FeaturedArticle.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/12. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class FeaturedArticle: FeaturedObject { 13 | 14 | @NSManaged var article: Article? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/FeaturedQuestionAnswer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FeaturedQuestionAnswer.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/12. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class FeaturedQuestionAnswer: FeaturedObject { 13 | 14 | @NSManaged var question: Question? 15 | @NSManaged var answers: Set 16 | @NSManaged var answerUsers: Set 17 | 18 | } 19 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/QuestionFocusingAction.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionFocusingAction.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/10/7. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class QuestionFocusingAction: Action { 13 | 14 | @NSManaged var question: Question? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/DataObject/QuestionPublishmentAction.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionPublishmentAction.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/10/7. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | import CoreData 10 | import Foundation 11 | 12 | class QuestionPublishmentAction: Action { 13 | 14 | @NSManaged var question: Question? 15 | 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Manager/SettingsManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SettingsManager.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/6/1. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | let CurrentThemeDidChangeNotificationName = "CurrentThemeDidChangeNotification" 12 | 13 | let UserDefaultsCurrentThemeNameKey = "UserDefaultsCurrentThemeName" 14 | 15 | class SettingsManager: NSObject { 16 | 17 | static var defaultManager = SettingsManager() 18 | 19 | var currentTheme: Theme = { 20 | if let path = NSBundle.mainBundle().pathForResource("Themes", ofType: "plist") { 21 | if let infos = NSDictionary(contentsOfFile: path) { 22 | let defaults = NSUserDefaults.standardUserDefaults() 23 | if let current = defaults.objectForKey(UserDefaultsCurrentThemeNameKey) as? String { 24 | return Theme(name: current, configuration: infos[current] as? NSDictionary ?? [:]) 25 | } else { 26 | if let name = infos.allKeys.first as? String { 27 | return Theme(name: name, configuration: infos[name] as? NSDictionary ?? [:]) 28 | } 29 | } 30 | } 31 | } 32 | return Theme() 33 | }() { 34 | didSet { 35 | if currentTheme !== oldValue { 36 | NSNotificationCenter.defaultCenter().postNotificationName(CurrentThemeDidChangeNotificationName, object: nil) 37 | let defaults = NSUserDefaults.standardUserDefaults() 38 | defaults.setObject(currentTheme.name, forKey: UserDefaultsCurrentThemeNameKey) 39 | defaults.synchronize() 40 | } 41 | } 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Others/Evalation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Evalation.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/4. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | @objc enum Evaluation: Int { 12 | case None = 0 13 | case Up = 1 14 | case Down = -1 15 | } 16 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Others/SidebarCategory.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SidebarCategory.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/8/15. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | enum SidebarCategory: String { 12 | case User = "User" 13 | case Home = "Home" 14 | case Explore = "Explore" 15 | case Drafts = "Drafts" 16 | case Search = "Search" 17 | case Topic = "Topic" 18 | case Publishment = "Publishment" 19 | case ReadingList = "ReadingList" 20 | case History = "History" 21 | case Settings = "Settings" 22 | case About = "About" 23 | static var allValues: [SidebarCategory] = [ 24 | .User, 25 | .Home, 26 | .Explore, 27 | // .Drafts, 28 | .Topic, 29 | .Search, 30 | .Publishment, 31 | // .ReadingList, 32 | // .History, 33 | .Settings, 34 | .About] 35 | } 36 | 37 | func localizedStringFromSidebarCategory(category: SidebarCategory) -> String { 38 | let data: [SidebarCategory: String] = [ 39 | .User: "个人中心", 40 | .Home: "首页", 41 | .Explore: "发现", 42 | .Drafts: "草稿", 43 | .Search: "搜索", 44 | .Topic: "话题", 45 | .Publishment: "发布", 46 | .ReadingList: "阅读列表", 47 | .History: "历史记录", 48 | .Settings: "设置", 49 | .About: "关于"] 50 | return data[category]! 51 | } 52 | 53 | func imageFromSidebarCategory(category: SidebarCategory) -> UIImage { 54 | return UIImage(named: "Sidebar-" + category.rawValue)! 55 | } 56 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Others/String+PlainString.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+PlainString.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/24. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension String { 12 | var wc_plainString: String { 13 | let attributedString = NSAttributedString(HTMLData: self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true), options: nil, documentAttributes: nil) 14 | return attributedString?.string.msr_stringByRemovingCharactersInSet(NSCharacterSet.newlineCharacterSet()).stringByReplacingOccurrencesOfString("\\[attach\\][1-9][0-9]*\\[/attach\\]", withString: "[图片]", options: .RegularExpressionSearch, range: nil) ?? "" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Others/TintColor.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TintColor.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/27. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | func TintColorFromColor(color: UIColor?) -> UIColor { 12 | if color != nil { 13 | let hue = color!.msr_hue 14 | let saturation = color!.msr_saturation 15 | return UIColor(hue: hue, saturation: saturation, brightness: 0.3, alpha: 1) 16 | } else { 17 | return UIColor.blackColor() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Sharing/SinaWeiboActivity.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SinaWeiboActivity.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/21. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SinaWeiboSDK 11 | 12 | class SinaWeiboActivity: UIActivity { 13 | 14 | override class func activityCategory() -> UIActivityCategory { 15 | return .Share 16 | } 17 | 18 | override func activityType() -> String? { 19 | return NSStringFromClass(SinaWeiboActivity.self) 20 | } 21 | 22 | override func activityTitle() -> String? { 23 | return "新浪微博" 24 | } 25 | 26 | override func activityImage() -> UIImage? { 27 | return UIImage(named: "Share-SinaWeibo") 28 | } 29 | 30 | override func canPerformWithActivityItems(activityItems: [AnyObject]) -> Bool { 31 | if WeiboSDK.isWeiboAppInstalled() && WeiboSDK.isCanShareInWeiboAPP() { 32 | for item in activityItems { 33 | if item is String { 34 | return true 35 | } 36 | } 37 | } 38 | return false 39 | } 40 | 41 | var message: WBMessageObject! 42 | 43 | override func prepareWithActivityItems(activityItems: [AnyObject]) { 44 | message = WBMessageObject() 45 | var url: NSURL? = nil 46 | var title: String? = nil 47 | var body = "" 48 | var image: UIImage? = nil 49 | for item in activityItems { 50 | switch item { 51 | case let item as NSURL: 52 | url = item 53 | case let item as String: 54 | if title == nil { 55 | title = item 56 | } else { 57 | body += item + "\n" 58 | } 59 | break 60 | case let item as UIImage where image == nil: 61 | image = item 62 | break 63 | default: 64 | break 65 | } 66 | } 67 | let webpageObject = WBWebpageObject() 68 | webpageObject.webpageUrl = url?.absoluteString ?? NetworkManager.defaultManager!.website 69 | webpageObject.objectID = NSBundle.mainBundle().bundleIdentifier 70 | webpageObject.title = title 71 | webpageObject.description = body 72 | webpageObject.thumbnailData = image?.msr_imageOfSize(CGSize(width: 100, height: 100)).dataForPNGRepresentation() 73 | message.mediaObject = webpageObject 74 | } 75 | 76 | override func performActivity() { 77 | let request = WBSendMessageToWeiboRequest.requestWithMessage(message) as! WBSendMessageToWeiboRequest 78 | WeiboSDK.sendRequest(request) 79 | activityDidFinish(true) 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Sharing/WeChatActivity.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeChatActivity.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/6/26. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import WeChatSDK 11 | 12 | class WeChatActivity: UIActivity { 13 | 14 | override class func activityCategory() -> UIActivityCategory { 15 | return .Share 16 | } 17 | 18 | override func canPerformWithActivityItems(activityItems: [AnyObject]) -> Bool { 19 | if WXApi.isWXAppInstalled() && WXApi.isWXAppSupportApi() { 20 | for item in activityItems { 21 | if item is String { 22 | return true 23 | } 24 | } 25 | } 26 | return false 27 | } 28 | 29 | var message: WXMediaMessage! 30 | 31 | override func prepareWithActivityItems(activityItems: [AnyObject]) { 32 | message = WXMediaMessage() 33 | var url: NSURL? = nil 34 | var title: String? = nil 35 | var body = "" 36 | var image: UIImage? = nil 37 | for item in activityItems { 38 | switch item { 39 | case let item as NSURL: 40 | url = item 41 | case let item as String: 42 | if title == nil { 43 | title = item 44 | } else { 45 | body += item + "\n" 46 | } 47 | break 48 | case let item as UIImage where image == nil: 49 | image = item 50 | break 51 | default: 52 | break 53 | } 54 | } 55 | let webpageObject = WXWebpageObject() 56 | webpageObject.webpageUrl = url?.absoluteString ?? NetworkManager.defaultManager!.website 57 | message.title = title 58 | message.description = body 59 | message.thumbData = image?.msr_imageOfSize(CGSize(width: 100, height: 100)).dataForPNGRepresentation() 60 | message.mediaObject = webpageObject 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Sharing/WeChatSessionActivity.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeChatSessionActivity.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/21. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import WeChatSDK 11 | 12 | class WeChatSessionActivity: WeChatActivity { 13 | 14 | override func activityType() -> String? { 15 | return NSStringFromClass(WeChatSessionActivity.self) 16 | } 17 | 18 | override func activityTitle() -> String? { 19 | return "微信好友" 20 | } 21 | 22 | override func activityImage() -> UIImage? { 23 | return UIImage(named: "Share-WeChatSession") 24 | } 25 | 26 | override func performActivity() { 27 | let request = SendMessageToWXReq() 28 | request.bText = false 29 | request.message = message 30 | request.scene = Int32(WXSceneSession.rawValue) 31 | WXApi.sendReq(request) 32 | activityDidFinish(true) 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /WeCenterMobile/Model/Sharing/WeChatTimelineActivity.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeChatTimelineActivity.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/21. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import WeChatSDK 11 | 12 | class WeChatTimelineActivity: WeChatActivity { 13 | 14 | override func activityType() -> String? { 15 | return NSStringFromClass(WeChatTimelineActivity.self) 16 | } 17 | 18 | override func activityTitle() -> String? { 19 | return "朋友圈" 20 | } 21 | 22 | override func activityImage() -> UIImage? { 23 | return UIImage(named: "Share-WeChatMoments") 24 | } 25 | 26 | override func performActivity() { 27 | let request = SendMessageToWXReq() 28 | request.bText = false 29 | request.message = message 30 | request.scene = Int32(WXSceneTimeline.rawValue) 31 | WXApi.sendReq(request) 32 | activityDidFinish(true) 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /WeCenterMobile/Themes.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Day 6 | 7 | Title Font Name 8 | 9 | Subtitle Font Name 10 | 11 | Body Font Name 12 | 13 | Footnote Font Name 14 | 15 | Font Size Offset 16 | 0 17 | Title Text Color 18 | 223 19 | Subtitle Text Color 20 | 138 21 | Body Text Color 22 | 138 23 | Footnote Text Color 24 | 66 25 | Background Color A 26 | 4008636159 27 | Background Color B 28 | 4126537215 29 | Border Color A 30 | 3772834047 31 | Border Color B 32 | 2661195519 33 | Control Color A 34 | 2619846911 35 | Control Color B 36 | 3772834047 37 | Highlight Color 38 | 31 39 | Navigation Item Color 40 | 127 41 | Navigation Bar Style 42 | 0 43 | Status Bar Style 44 | 0 45 | Tool Bar Item Color 46 | 127 47 | Tool Bar Style 48 | 0 49 | Background Blur Effect Style 50 | 0 51 | Keyboard Appearance 52 | 2 53 | Scroll View Indicator Style 54 | 1 55 | 56 | Night 57 | 58 | Title Font Name 59 | 60 | Subtitle Font Name 61 | 62 | Body Font Name 63 | 64 | Footnote Font Name 65 | 66 | Font Size Offset 67 | 0 68 | Title Text Color 69 | 4294967263 70 | Subtitle Text Color 71 | 4294967178 72 | Body Text Color 73 | 4294967178 74 | Footnote Text Color 75 | 4294967106 76 | Background Color A 77 | 555819519 78 | Background Color B 79 | 825307647 80 | Border Color A 81 | 555819519 82 | Border Color B 83 | 1111638783 84 | Control Color A 85 | 2619846911 86 | Control Color B 87 | 1633772031 88 | Highlight Color 89 | 4294967071 90 | Navigation Item Color 91 | 4294967167 92 | Navigation Bar Style 93 | 1 94 | Status Bar Style 95 | 1 96 | Tool Bar Item Color 97 | 4294967167 98 | Tool Bar Style 99 | 1 100 | Background Blur Effect Style 101 | 2 102 | Keyboard Appearance 103 | 1 104 | Scroll View Indicator Style 105 | 2 106 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Answer/AnswerAdditionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerAdditionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/29. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnswerAdditionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var containerView: UIView! 14 | @IBOutlet weak var answerAdditionImageView: UIImageView! 15 | @IBOutlet weak var answerAdditionLabel: UILabel! 16 | @IBOutlet weak var answerAdditionButton: UIButton! 17 | @IBOutlet weak var borderA: UIView! 18 | @IBOutlet weak var borderB: UIView! 19 | @IBOutlet weak var borderC: UIView! 20 | @IBOutlet weak var borderD: UIView! 21 | 22 | override func awakeFromNib() { 23 | super.awakeFromNib() 24 | msr_scrollView?.delaysContentTouches = false 25 | let theme = SettingsManager.defaultManager.currentTheme 26 | answerAdditionImageView.tintColor = theme.subtitleTextColor 27 | answerAdditionLabel.textColor = theme.subtitleTextColor 28 | answerAdditionButton.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 29 | containerView.backgroundColor = theme.backgroundColorB 30 | for v in [borderA, borderB, borderC, borderD] { 31 | v.backgroundColor = theme.borderColorA 32 | } 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Answer/AnswerCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/29. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnswerCell: UITableViewCell { 12 | 13 | var answer: Answer? 14 | 15 | @IBOutlet weak var userNameLabel: UILabel! 16 | @IBOutlet weak var answerBodyLabel: MSRMultilineLabel! 17 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 18 | @IBOutlet weak var agreementCountLabel: UILabel! 19 | @IBOutlet weak var userButton: UIButton! 20 | @IBOutlet weak var answerButton: UIButton! 21 | @IBOutlet weak var separator: UIView! 22 | @IBOutlet weak var containerView: UIView! 23 | @IBOutlet weak var userContainerView: UIView! 24 | @IBOutlet weak var answerContainerView: UIView! 25 | 26 | override func awakeFromNib() { 27 | super.awakeFromNib() 28 | msr_scrollView?.delaysContentTouches = false 29 | let theme = SettingsManager.defaultManager.currentTheme 30 | for v in [containerView, agreementCountLabel] { 31 | v.msr_borderColor = theme.borderColorA 32 | } 33 | for v in [userButton, answerButton] { 34 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 35 | } 36 | for v in [agreementCountLabel, answerBodyLabel] { 37 | v.textColor = theme.subtitleTextColor 38 | } 39 | for v in [userContainerView, answerContainerView] { 40 | v.backgroundColor = theme.backgroundColorB 41 | } 42 | agreementCountLabel.backgroundColor = theme.backgroundColorA 43 | separator.backgroundColor = theme.borderColorA 44 | userNameLabel.textColor = theme.titleTextColor 45 | } 46 | 47 | func update(answer answer: Answer, updateImage: Bool) { 48 | self.answer = answer 49 | userNameLabel.text = answer.user?.name ?? "匿名用户" 50 | answerBodyLabel.text = answer.body?.wc_plainString 51 | agreementCountLabel.text = "\(answer.agreementCount ?? 0)" 52 | userButton.msr_userInfo = answer.user 53 | answerButton.msr_userInfo = answer 54 | if updateImage { 55 | userAvatarView.wc_updateWithUser(answer.user) 56 | } 57 | setNeedsLayout() 58 | layoutIfNeeded() 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Answer/AnswerCellWithQuestionTitle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerCellWithQuestionTitle.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/12. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnswerCellWithQuestionTitle: UITableViewCell { 12 | 13 | @IBOutlet weak var questionTitleLabel: UILabel! 14 | @IBOutlet weak var answerUserAvatarView: MSRRoundedImageView! 15 | @IBOutlet weak var answerUserNameLabel: UILabel! 16 | @IBOutlet weak var answerBodyLabel: UILabel! 17 | @IBOutlet weak var answerAgreementCountLabel: UILabel! 18 | @IBOutlet weak var questionButton: UIButton! 19 | @IBOutlet weak var answerButton: UIButton! 20 | @IBOutlet weak var userButton: UIButton! 21 | @IBOutlet weak var containerView: UIView! 22 | @IBOutlet weak var questionContainerView: UIView! 23 | @IBOutlet weak var userContainerView: UIView! 24 | @IBOutlet weak var answerContainerView: UIView! 25 | @IBOutlet weak var separatorA: UIView! 26 | @IBOutlet weak var separatorB: UIView! 27 | 28 | override func awakeFromNib() { 29 | super.awakeFromNib() 30 | let theme = SettingsManager.defaultManager.currentTheme 31 | msr_scrollView?.delaysContentTouches = false 32 | for v in [containerView, answerAgreementCountLabel] { 33 | v.msr_borderColor = theme.borderColorA 34 | } 35 | for v in [separatorA, separatorB] { 36 | v.backgroundColor = theme.borderColorA 37 | } 38 | for v in [questionContainerView, userContainerView] { 39 | v.backgroundColor = theme.backgroundColorB 40 | } 41 | for v in [answerContainerView, answerAgreementCountLabel] { 42 | v.backgroundColor = theme.backgroundColorA 43 | } 44 | for v in [questionButton, userButton, answerButton] { 45 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 46 | } 47 | for v in [answerBodyLabel, answerAgreementCountLabel] { 48 | v.textColor = theme.subtitleTextColor 49 | } 50 | questionTitleLabel.textColor = theme.titleTextColor 51 | } 52 | 53 | func update(answer answer: Answer) { 54 | questionTitleLabel.text = answer.question!.title 55 | answerUserAvatarView.wc_updateWithUser(answer.user) 56 | let theme = SettingsManager.defaultManager.currentTheme 57 | let text = NSMutableAttributedString(string: answer.user?.name ?? "匿名用户", attributes: [ 58 | NSFontAttributeName: UIFont.systemFontOfSize(14), 59 | NSForegroundColorAttributeName: theme.titleTextColor]) 60 | if let signature = answer.user?.signature?.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet()) { 61 | text.appendAttributedString(NSAttributedString(string: "," + signature, attributes: [ 62 | NSFontAttributeName: UIFont.systemFontOfSize(14), 63 | NSForegroundColorAttributeName: theme.footnoteTextColor])) 64 | } 65 | answerUserNameLabel.attributedText = text 66 | answerBodyLabel.text = answer.body!.wc_plainString 67 | answerAgreementCountLabel.text = answer.agreementCount?.description ?? "0" 68 | questionButton.msr_userInfo = answer.question 69 | answerButton.msr_userInfo = answer 70 | userButton.msr_userInfo = answer.user 71 | setNeedsLayout() 72 | layoutIfNeeded() 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Article/ArticleCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/1. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ArticleCell: UITableViewCell { 12 | 13 | @IBOutlet weak var articleTitleLabel: UILabel! 14 | @IBOutlet weak var articleBodyLabel: UILabel! 15 | @IBOutlet weak var userNameLabel: UILabel! 16 | @IBOutlet weak var dateLabel: UILabel! 17 | @IBOutlet weak var userButton: UIButton! 18 | @IBOutlet weak var articleButton: UIButton! 19 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 20 | @IBOutlet weak var containerView: UIView! 21 | @IBOutlet weak var userContainerView: UIView! 22 | @IBOutlet weak var articleContainerView: UIView! 23 | @IBOutlet weak var separator: UIView! 24 | 25 | lazy var dateFormatter: NSDateFormatter = { 26 | let f = NSDateFormatter() 27 | f.timeZone = NSTimeZone.localTimeZone() 28 | f.dateFormat = "yyyy-MM-dd HH:mm:ss" 29 | return f 30 | }() 31 | 32 | override func awakeFromNib() { 33 | super.awakeFromNib() 34 | msr_scrollView?.delaysContentTouches = false 35 | let theme = SettingsManager.defaultManager.currentTheme 36 | containerView.msr_borderColor = theme.borderColorA 37 | separator.backgroundColor = theme.borderColorA 38 | for v in [userContainerView, articleContainerView] { 39 | v.backgroundColor = theme.backgroundColorB 40 | } 41 | for v in [userButton, articleButton] { 42 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 43 | } 44 | for v in [userNameLabel, articleTitleLabel] { 45 | v.textColor = theme.titleTextColor 46 | } 47 | dateLabel.textColor = theme.footnoteTextColor 48 | articleBodyLabel.textColor = theme.subtitleTextColor 49 | } 50 | 51 | func update(article article: Article) { 52 | articleTitleLabel.text = article.title 53 | articleBodyLabel.text = article.body?.wc_plainString ?? "" 54 | userNameLabel.text = article.user?.name ?? "匿名用户" 55 | if let date = article.date { 56 | dateLabel.text = dateFormatter.stringFromDate(date) 57 | } else { 58 | dateLabel.text = "" 59 | } 60 | userAvatarView.wc_updateWithUser(article.user) 61 | userButton.msr_userInfo = article.user 62 | articleButton.msr_userInfo = article 63 | setNeedsLayout() 64 | layoutIfNeeded() 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Article/ArticleFooterView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleFooterView.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/3. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | let normalAgreeImage = UIImage(named: "Evaluation-Like-Normal") 12 | let highlightedAgreeImage = UIImage(named: "Evaluation-Like-Highlighted") 13 | let normalDisagreeImage = UIImage(named: "Evaluation-Dislike-Normal") 14 | let highlightedDisagreeImage = UIImage(named: "Evaluation-Dislike-Highlighted") 15 | 16 | class ArticleFooterView: UIToolbar { 17 | 18 | @IBOutlet weak var shareItem: UIBarButtonItem! 19 | @IBOutlet weak var agreeItem: UIBarButtonItem! 20 | @IBOutlet weak var agreementCountItem: UIBarButtonItem! 21 | @IBOutlet weak var disagreeItem: UIBarButtonItem! 22 | @IBOutlet weak var commentItem: UIBarButtonItem! 23 | @IBOutlet weak var separatorAItem: UIBarButtonItem! 24 | @IBOutlet weak var separatorBItem: UIBarButtonItem! 25 | 26 | lazy var activityIndicatorView: UIActivityIndicatorView = { 27 | let v = UIActivityIndicatorView(activityIndicatorStyle: .White) 28 | let theme = SettingsManager.defaultManager.currentTheme 29 | v.color = theme.toolbarItemColor 30 | v.translatesAutoresizingMaskIntoConstraints = false 31 | v.hidesWhenStopped = true 32 | v.stopAnimating() 33 | return v 34 | }() 35 | 36 | override func awakeFromNib() { 37 | super.awakeFromNib() 38 | let theme = SettingsManager.defaultManager.currentTheme 39 | barStyle = theme.toolbarStyle 40 | tintColor = theme.toolbarItemColor 41 | agreementCountItem.setTitleTextAttributes([ 42 | NSForegroundColorAttributeName: theme.toolbarItemColor, 43 | NSFontAttributeName: UIFont.systemFontOfSize(14)], 44 | forState: .Normal) 45 | for v in [separatorAItem, separatorBItem] { 46 | v.customView!.backgroundColor = theme.borderColorA 47 | } 48 | for item in items ?? [] { 49 | item.tintColor = theme.toolbarItemColor 50 | } 51 | let s = NSMutableParagraphStyle.defaultParagraphStyle().mutableCopy() as! NSMutableParagraphStyle 52 | s.alignment = .Center 53 | addSubview(activityIndicatorView) 54 | activityIndicatorView.msr_addCenterConstraintsToSuperview() 55 | } 56 | 57 | func update(dataObject dataObject: ArticleViewControllerPresentable) { 58 | if let count = dataObject.agreementCount { 59 | agreeItem.enabled = true 60 | disagreeItem.enabled = true 61 | agreementCountItem.title = "\(count)" 62 | activityIndicatorView.stopAnimating() 63 | } else { 64 | agreeItem.enabled = false 65 | disagreeItem.enabled = false 66 | agreementCountItem.title = "" 67 | activityIndicatorView.startAnimating() 68 | } 69 | agreeItem.image = dataObject.evaluationRawValue?.integerValue == Evaluation.Up.rawValue ? highlightedAgreeImage : normalAgreeImage 70 | disagreeItem.image = dataObject.evaluationRawValue?.integerValue == Evaluation.Down.rawValue ? highlightedDisagreeImage: normalDisagreeImage 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Comment/CommentCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CommentCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/2/3. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class CommentCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var bodyLabel: UILabel! 16 | @IBOutlet weak var userButton: UIButton! 17 | @IBOutlet weak var commentButton: UIButton! 18 | @IBOutlet weak var separator: UIView! 19 | @IBOutlet weak var userContainerView: UIView! 20 | @IBOutlet weak var commentContainerView: UIView! 21 | @IBOutlet weak var containerView: UIView! 22 | 23 | override func awakeFromNib() { 24 | super.awakeFromNib() 25 | let theme = SettingsManager.defaultManager.currentTheme 26 | msr_scrollView?.delaysContentTouches = false 27 | containerView.msr_borderColor = theme.borderColorA 28 | separator.backgroundColor = theme.borderColorA 29 | for v in [userContainerView, commentContainerView] { 30 | v.backgroundColor = theme.backgroundColorB 31 | } 32 | for v in [userButton, commentButton] { 33 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 34 | } 35 | userNameLabel.textColor = theme.titleTextColor 36 | } 37 | 38 | func update(comment comment: Comment) { 39 | msr_userInfo = comment 40 | userAvatarView.wc_updateWithUser(comment.user) 41 | userNameLabel.text = comment.user?.name 42 | let attributedString = NSMutableAttributedString() 43 | let theme = SettingsManager.defaultManager.currentTheme 44 | if comment.atUser?.name != nil { 45 | attributedString.appendAttributedString(NSAttributedString( 46 | string: "@\(comment.atUser!.name!) ", 47 | attributes: [ 48 | NSForegroundColorAttributeName: theme.footnoteTextColor, 49 | NSFontAttributeName: bodyLabel.font])) 50 | } 51 | attributedString.appendAttributedString(NSAttributedString( 52 | string: (comment.body ?? ""), 53 | attributes: [ 54 | NSForegroundColorAttributeName: theme.bodyTextColor, 55 | NSFontAttributeName: bodyLabel.font])) 56 | bodyLabel.attributedText = attributedString 57 | userButton.msr_userInfo = comment.user 58 | commentButton.msr_userInfo = comment 59 | setNeedsLayout() 60 | layoutIfNeeded() 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Explore/FeaturedArticleCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FeaturedArticleCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/13. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class FeaturedArticleCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var articleTitleLabel: UILabel! 16 | @IBOutlet weak var articleTagLabel: UILabel! 17 | @IBOutlet weak var articleUserButton: UIButton! 18 | @IBOutlet weak var articleButton: UIButton! 19 | @IBOutlet weak var containerView: UIView! 20 | @IBOutlet weak var badgeLabel: UILabel! 21 | @IBOutlet weak var separator: UIView! 22 | @IBOutlet weak var userContainerView: UIView! 23 | @IBOutlet weak var articleContainerView: UIView! 24 | 25 | override func awakeFromNib() { 26 | super.awakeFromNib() 27 | msr_scrollView?.delaysContentTouches = false 28 | let theme = SettingsManager.defaultManager.currentTheme 29 | for v in [userContainerView, articleContainerView] { 30 | v.backgroundColor = theme.backgroundColorB 31 | } 32 | badgeLabel.backgroundColor = theme.backgroundColorA 33 | for v in [containerView, badgeLabel] { 34 | v.msr_borderColor = theme.borderColorA 35 | } 36 | separator.backgroundColor = theme.borderColorA 37 | for v in [articleUserButton, articleButton] { 38 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 39 | } 40 | for v in [userNameLabel, articleTitleLabel] { 41 | v.textColor = theme.titleTextColor 42 | } 43 | badgeLabel.textColor = theme.footnoteTextColor 44 | } 45 | 46 | func update(object object: FeaturedObject) { 47 | let object = object as! FeaturedArticle 48 | let article = object.article! 49 | userAvatarView.wc_updateWithUser(article.user) 50 | userNameLabel.text = article.user?.name ?? "匿名用户" 51 | articleTitleLabel.text = article.title 52 | articleButton.msr_userInfo = article 53 | articleUserButton.msr_userInfo = article.user 54 | setNeedsLayout() 55 | layoutIfNeeded() 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /WeCenterMobile/View/Explore/FeaturedQuestionAnswerCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FeaturedQuestionAnswerCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/13. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class FeaturedQuestionAnswerCell: UITableViewCell { 12 | 13 | @IBOutlet weak var questionUserAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var questionUserNameLabel: UILabel! 15 | @IBOutlet weak var questionTitleLabel: UILabel! 16 | @IBOutlet weak var answerUserAvatarView: MSRRoundedImageView? 17 | @IBOutlet weak var answerBodyLabel: UILabel? 18 | @IBOutlet weak var answerUserNameLabel: UILabel? 19 | @IBOutlet weak var questionBadgeLabel: UILabel! 20 | @IBOutlet weak var answerBadgeLabel: UILabel? 21 | @IBOutlet weak var questionButton: UIButton! 22 | @IBOutlet weak var answerButton: UIButton? 23 | @IBOutlet weak var questionUserButton: UIButton! 24 | @IBOutlet weak var answerUserButton: UIButton? 25 | @IBOutlet weak var containerView: UIView! 26 | @IBOutlet weak var separatorA: UIView! 27 | @IBOutlet weak var separatorB: UIView? 28 | @IBOutlet weak var separatorC: UIView? 29 | @IBOutlet weak var questionUserContainerView: UIView! 30 | @IBOutlet weak var questionContainerView: UIView! 31 | @IBOutlet weak var answerUserContainerView: UIView? 32 | @IBOutlet weak var answerContainerView: UIView? 33 | 34 | override func awakeFromNib() { 35 | super.awakeFromNib() 36 | msr_scrollView?.delaysContentTouches = false 37 | let theme = SettingsManager.defaultManager.currentTheme 38 | for v in [containerView, questionBadgeLabel, answerBadgeLabel] { 39 | v?.msr_borderColor = theme.borderColorA 40 | } 41 | for v in [separatorA, separatorB, separatorC] { 42 | v?.backgroundColor = theme.borderColorA 43 | } 44 | for v in [questionButton, questionUserButton, answerButton, answerUserButton] { 45 | v?.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 46 | } 47 | for v in [questionUserContainerView, questionContainerView, answerUserContainerView, answerContainerView] { 48 | v?.backgroundColor = theme.backgroundColorB 49 | } 50 | for v in [questionBadgeLabel, answerBadgeLabel] { 51 | v?.backgroundColor = theme.backgroundColorA 52 | v?.textColor = theme.footnoteTextColor 53 | } 54 | for v in [questionUserNameLabel, questionTitleLabel, answerUserNameLabel] { 55 | v?.textColor = theme.titleTextColor 56 | } 57 | answerBodyLabel?.textColor = theme.subtitleTextColor 58 | } 59 | 60 | func update(object object: FeaturedObject) { 61 | let object = object as! FeaturedQuestionAnswer 62 | let question = object.question! 63 | let answer = object.answers.first 64 | questionUserAvatarView.wc_updateWithUser(question.user) 65 | answerUserAvatarView?.wc_updateWithUser(answer?.user) 66 | questionUserNameLabel.text = question.user?.name 67 | questionTitleLabel.text = question.title 68 | answerUserNameLabel?.text = answer?.user?.name ?? "匿名用户" 69 | answerBodyLabel?.text = answer?.body!.wc_plainString 70 | questionButton.msr_userInfo = question 71 | answerButton?.msr_userInfo = answer 72 | questionUserButton.msr_userInfo = question.user 73 | answerUserButton?.msr_userInfo = answer?.user 74 | setNeedsLayout() 75 | layoutIfNeeded() 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Home/AnswerActionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerActionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/12/28. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnswerActionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var typeLabel: UILabel! 16 | @IBOutlet weak var questionTitleLabel: UILabel! 17 | @IBOutlet weak var agreementCountLabel: UILabel! 18 | @IBOutlet weak var answerBodyLabel: UILabel! 19 | @IBOutlet weak var userButton: UIButton! 20 | @IBOutlet weak var questionButton: UIButton! 21 | @IBOutlet weak var answerButton: UIButton! 22 | @IBOutlet weak var containerView: UIView! 23 | @IBOutlet weak var userContainerView: UIView! 24 | @IBOutlet weak var questionContainerView: UIView! 25 | @IBOutlet weak var answerContainerView: UIView! 26 | @IBOutlet weak var separatorA: UIView! 27 | @IBOutlet weak var separatorB: UIView! 28 | 29 | override func awakeFromNib() { 30 | super.awakeFromNib() 31 | msr_scrollView?.delaysContentTouches = false 32 | let theme = SettingsManager.defaultManager.currentTheme 33 | for v in [containerView, agreementCountLabel] { 34 | v.msr_borderColor = theme.borderColorA 35 | } 36 | for v in [userButton, questionButton, answerButton] { 37 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 38 | } 39 | for v in [userContainerView, questionContainerView] { 40 | v.backgroundColor = theme.backgroundColorB 41 | } 42 | for v in [agreementCountLabel, answerContainerView] { 43 | v.backgroundColor = theme.backgroundColorA 44 | } 45 | for v in [separatorA, separatorB] { 46 | v.backgroundColor = theme.borderColorA 47 | } 48 | for v in [userNameLabel, questionTitleLabel] { 49 | v.textColor = theme.titleTextColor 50 | } 51 | for v in [agreementCountLabel, typeLabel, answerBodyLabel] { 52 | v.textColor = theme.subtitleTextColor 53 | } 54 | } 55 | 56 | func update(action action: Action) { 57 | let action = action as! AnswerAction 58 | userAvatarView.wc_updateWithUser(action.user) 59 | userNameLabel.text = action.user?.name ?? "匿名用户" 60 | questionTitleLabel.text = action.answer!.question!.title! 61 | agreementCountLabel.text = "\(action.answer!.agreementCount!)" 62 | answerBodyLabel.text = action.answer!.body!.wc_plainString 63 | userButton.msr_userInfo = action.user 64 | questionButton.msr_userInfo = action.answer!.question 65 | answerButton.msr_userInfo = action.answer 66 | setNeedsLayout() 67 | layoutIfNeeded() 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Home/AnswerAgreementActionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnswerAgreementActionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/12/29. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class AnswerAgreementActionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: UIImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var typeLabel: UILabel! 16 | @IBOutlet weak var questionTitleLabel: UILabel! 17 | @IBOutlet weak var agreementCountLabel: UILabel! 18 | @IBOutlet weak var answerBodyLabel: UILabel! 19 | @IBOutlet weak var userButton: UIButton! 20 | @IBOutlet weak var questionButton: UIButton! 21 | @IBOutlet weak var answerButton: UIButton! 22 | @IBOutlet weak var containerView: UIView! 23 | @IBOutlet weak var userContainerView: UIView! 24 | @IBOutlet weak var questionContainerView: UIView! 25 | @IBOutlet weak var answerContainerView: UIView! 26 | @IBOutlet weak var separatorA: UIView! 27 | @IBOutlet weak var separatorB: UIView! 28 | 29 | override func awakeFromNib() { 30 | super.awakeFromNib() 31 | msr_scrollView?.delaysContentTouches = false 32 | let theme = SettingsManager.defaultManager.currentTheme 33 | for v in [containerView, agreementCountLabel] { 34 | v.msr_borderColor = theme.borderColorA 35 | } 36 | for v in [userButton, questionButton, answerButton] { 37 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 38 | } 39 | for v in [userContainerView, questionContainerView] { 40 | v.backgroundColor = theme.backgroundColorB 41 | } 42 | for v in [agreementCountLabel, answerContainerView] { 43 | v.backgroundColor = theme.backgroundColorA 44 | } 45 | for v in [separatorA, separatorB] { 46 | v.backgroundColor = theme.borderColorA 47 | } 48 | for v in [userNameLabel, questionTitleLabel] { 49 | v.textColor = theme.titleTextColor 50 | } 51 | for v in [agreementCountLabel, typeLabel, answerBodyLabel] { 52 | v.textColor = theme.subtitleTextColor 53 | } 54 | } 55 | 56 | func update(action action: Action) { 57 | let action = action as! AnswerAgreementAction 58 | userAvatarView.wc_updateWithUser(action.user) 59 | userNameLabel.text = action.user?.name ?? "匿名用户" 60 | questionTitleLabel.text = action.answer!.question!.title! 61 | agreementCountLabel.text = "\(action.answer!.agreementCount!)" 62 | answerBodyLabel.text = action.answer!.body!.wc_plainString 63 | userButton.msr_userInfo = action.user 64 | questionButton.msr_userInfo = action.answer!.question 65 | answerButton.msr_userInfo = action.answer 66 | setNeedsLayout() 67 | layoutIfNeeded() 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Home/ArticleAgreementActionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleAgreementActionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/12/30. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ArticleAgreementActionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var typeLabel: UILabel! 16 | @IBOutlet weak var articleTitleLabel: UILabel! 17 | @IBOutlet weak var userButton: UIButton! 18 | @IBOutlet weak var articleButton: UIButton! 19 | @IBOutlet weak var containerView: UIView! 20 | @IBOutlet weak var userContainerView: UIView! 21 | @IBOutlet weak var articleContainerView: UIView! 22 | @IBOutlet weak var separator: UIView! 23 | 24 | override func awakeFromNib() { 25 | super.awakeFromNib() 26 | msr_scrollView?.delaysContentTouches = false 27 | let theme = SettingsManager.defaultManager.currentTheme 28 | for v in [userContainerView, articleContainerView] { 29 | v.backgroundColor = theme.backgroundColorB 30 | } 31 | containerView.msr_borderColor = theme.borderColorA 32 | separator.backgroundColor = theme.borderColorA 33 | for v in [userButton, articleButton] { 34 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 35 | } 36 | for v in [userNameLabel, articleTitleLabel] { 37 | v.textColor = theme.titleTextColor 38 | } 39 | typeLabel.textColor = theme.subtitleTextColor 40 | } 41 | 42 | func update(action action: Action) { 43 | let action = action as! ArticleAgreementAction 44 | userAvatarView.wc_updateWithUser(action.user) 45 | userNameLabel.text = action.user?.name ?? "匿名用户" 46 | articleTitleLabel.text = action.article!.title 47 | userButton.msr_userInfo = action.user 48 | articleButton.msr_userInfo = action.article 49 | setNeedsLayout() 50 | layoutIfNeeded() 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Home/ArticleCommentaryActionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleCommentaryActionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Bill Hu on 15/12/3. 6 | // Copyright © 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ArticleCommentaryActionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var typeLabel: UILabel! 16 | @IBOutlet weak var articleTitleLabel: UILabel! 17 | @IBOutlet weak var agreementCountLabel: UILabel! 18 | @IBOutlet weak var commentBodyLabel: UILabel! 19 | @IBOutlet weak var userButton: UIButton! 20 | @IBOutlet weak var articleButton: UIButton! 21 | @IBOutlet weak var commentButton: UIButton! 22 | @IBOutlet weak var containerView: UIView! 23 | @IBOutlet weak var userContainerView: UIView! 24 | @IBOutlet weak var articleContainerView: UIView! 25 | @IBOutlet weak var commentContainerView: UIView! 26 | @IBOutlet weak var separatorA: UIView! 27 | @IBOutlet weak var separatorB: UIView! 28 | 29 | override func awakeFromNib() { 30 | super.awakeFromNib() 31 | msr_scrollView?.delaysContentTouches = false 32 | let theme = SettingsManager.defaultManager.currentTheme 33 | for v in [containerView, agreementCountLabel] { 34 | v.msr_borderColor = theme.borderColorA 35 | } 36 | for v in [userButton, articleButton, commentButton] { 37 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 38 | } 39 | for v in [userContainerView, articleContainerView] { 40 | v.backgroundColor = theme.backgroundColorB 41 | } 42 | for v in [agreementCountLabel, commentContainerView] { 43 | v.backgroundColor = theme.backgroundColorA 44 | } 45 | for v in [separatorA, separatorB] { 46 | v.backgroundColor = theme.borderColorA 47 | } 48 | for v in [userNameLabel, articleTitleLabel] { 49 | v.textColor = theme.titleTextColor 50 | } 51 | for v in [agreementCountLabel, typeLabel, commentBodyLabel] { 52 | v.textColor = theme.subtitleTextColor 53 | } 54 | } 55 | 56 | func update(action action: Action) { 57 | let action = action as! ArticleCommentaryAction 58 | userAvatarView.wc_updateWithUser(action.user) 59 | userNameLabel.text = action.user?.name ?? "匿名用户" 60 | articleTitleLabel.text = action.comment!.article!.title! 61 | agreementCountLabel.text = "\(action.comment!.agreementCount!)" 62 | commentBodyLabel.text = action.comment!.body!.wc_plainString 63 | userButton.msr_userInfo = action.user 64 | articleButton.msr_userInfo = action.comment!.article 65 | commentButton.msr_userInfo = action.comment 66 | setNeedsLayout() 67 | layoutIfNeeded() 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Home/ArticlePublishmentActionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticlePublishmentActionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/12/29. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ArticlePublishmentActionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var typeLabel: UILabel! 16 | @IBOutlet weak var articleTitleLabel: UILabel! 17 | @IBOutlet weak var userButton: UIButton! 18 | @IBOutlet weak var articleButton: UIButton! 19 | @IBOutlet weak var containerView: UIView! 20 | @IBOutlet weak var userContainerView: UIView! 21 | @IBOutlet weak var articleContainerView: UIView! 22 | @IBOutlet weak var separator: UIView! 23 | 24 | override func awakeFromNib() { 25 | super.awakeFromNib() 26 | msr_scrollView?.delaysContentTouches = false 27 | let theme = SettingsManager.defaultManager.currentTheme 28 | for v in [userContainerView, articleContainerView] { 29 | v.backgroundColor = theme.backgroundColorB 30 | } 31 | containerView.msr_borderColor = theme.borderColorA 32 | separator.backgroundColor = theme.borderColorA 33 | for v in [userButton, articleButton] { 34 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 35 | } 36 | for v in [userNameLabel, articleTitleLabel] { 37 | v.textColor = theme.titleTextColor 38 | } 39 | typeLabel.textColor = theme.subtitleTextColor 40 | } 41 | 42 | func update(action action: Action) { 43 | let action = action as! ArticlePublishmentAction 44 | userAvatarView.wc_updateWithUser(action.user) 45 | userNameLabel.text = action.user?.name ?? "匿名用户" 46 | articleTitleLabel.text = action.article!.title 47 | userButton.msr_userInfo = action.user 48 | articleButton.msr_userInfo = action.article 49 | setNeedsLayout() 50 | layoutIfNeeded() 51 | } 52 | } -------------------------------------------------------------------------------- /WeCenterMobile/View/Home/QuestionFocusingActionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionFocusingActionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/12/29. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class QuestionFocusingActionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var typeLabel: UILabel! 16 | @IBOutlet weak var questionTitleLabel: UILabel! 17 | @IBOutlet weak var userButton: UIButton! 18 | @IBOutlet weak var questionButton: UIButton! 19 | @IBOutlet weak var containerView: UIView! 20 | @IBOutlet weak var userContainerView: UIView! 21 | @IBOutlet weak var questionContainerView: UIView! 22 | @IBOutlet weak var separator: UIView! 23 | 24 | override func awakeFromNib() { 25 | super.awakeFromNib() 26 | msr_scrollView?.delaysContentTouches = false 27 | let theme = SettingsManager.defaultManager.currentTheme 28 | for v in [userContainerView, questionContainerView] { 29 | v.backgroundColor = theme.backgroundColorB 30 | } 31 | containerView.msr_borderColor = theme.borderColorA 32 | separator.backgroundColor = theme.borderColorA 33 | for v in [userButton, questionButton] { 34 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 35 | } 36 | for v in [userNameLabel, questionTitleLabel] { 37 | v.textColor = theme.titleTextColor 38 | } 39 | typeLabel.textColor = theme.subtitleTextColor 40 | } 41 | 42 | func update(action action: Action) { 43 | let action = action as! QuestionFocusingAction 44 | userAvatarView.wc_updateWithUser(action.user) 45 | userNameLabel.text = action.user?.name ?? "匿名用户" 46 | questionTitleLabel.text = action.question!.title 47 | userButton.msr_userInfo = action.user 48 | questionButton.msr_userInfo = action.question 49 | setNeedsLayout() 50 | layoutIfNeeded() 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Home/QuestionPublishmentActionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionPublishmentActionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/12/29. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class QuestionPublishmentActionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var typeLabel: UILabel! 16 | @IBOutlet weak var questionTitleLabel: UILabel! 17 | @IBOutlet weak var userButton: UIButton! 18 | @IBOutlet weak var questionButton: UIButton! 19 | @IBOutlet weak var containerView: UIView! 20 | @IBOutlet weak var userContainerView: UIView! 21 | @IBOutlet weak var questionContainerView: UIView! 22 | @IBOutlet weak var separator: UIView! 23 | 24 | override func awakeFromNib() { 25 | super.awakeFromNib() 26 | msr_scrollView?.delaysContentTouches = false 27 | let theme = SettingsManager.defaultManager.currentTheme 28 | for v in [userContainerView, questionContainerView] { 29 | v.backgroundColor = theme.backgroundColorB 30 | } 31 | containerView.msr_borderColor = theme.borderColorA 32 | separator.backgroundColor = theme.borderColorA 33 | for v in [userButton, questionButton] { 34 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 35 | } 36 | for v in [userNameLabel, questionTitleLabel] { 37 | v.textColor = theme.titleTextColor 38 | } 39 | typeLabel.textColor = theme.subtitleTextColor 40 | } 41 | 42 | func update(action action: Action) { 43 | let action = action as! QuestionPublishmentAction 44 | userAvatarView.wc_updateWithUser(action.user) 45 | userNameLabel.text = action.user?.name ?? "匿名用户" 46 | questionTitleLabel.text = action.question!.title! 47 | userButton.msr_userInfo = action.user 48 | questionButton.msr_userInfo = action.question 49 | setNeedsLayout() 50 | layoutIfNeeded() 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Others/ImageUploadingProgressBar.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Others/KeyboardBar.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KeyboardBar.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/5. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objc class KeyboardBar: UIView { 12 | 13 | var backgroundView: UIView? { 14 | didSet { 15 | oldValue?.removeFromSuperview() 16 | if backgroundView != nil { 17 | backgroundView!.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 18 | backgroundView!.frame = bounds 19 | addSubview(backgroundView!) 20 | sendSubviewToBack(backgroundView!) 21 | } 22 | } 23 | } 24 | 25 | lazy var textField: UITextField = { 26 | let v = UITextField() 27 | v.translatesAutoresizingMaskIntoConstraints = false 28 | let theme = SettingsManager.defaultManager.currentTheme 29 | v.textColor = theme.subtitleTextColor 30 | v.attributedPlaceholder = NSAttributedString(string: "在此处输入评论……", attributes: [NSForegroundColorAttributeName: theme.footnoteTextColor]) 31 | v.borderStyle = .None 32 | v.clearButtonMode = .WhileEditing 33 | v.keyboardAppearance = theme.keyboardAppearance 34 | return v 35 | }() 36 | 37 | lazy var publishButton: UIButton = { 38 | let v = UIButton() 39 | v.translatesAutoresizingMaskIntoConstraints = false 40 | let theme = SettingsManager.defaultManager.currentTheme 41 | v.setTitle("发布", forState: .Normal) // Needs localization 42 | v.setTitleColor(theme.subtitleTextColor, forState: .Normal) 43 | v.backgroundColor = theme.backgroundColorB 44 | v.msr_borderWidth = 0.5 45 | v.msr_borderColor = theme.borderColorA 46 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 47 | return v 48 | }() 49 | 50 | lazy var userAtView: UserAtView = { 51 | let v = UserAtView() 52 | v.translatesAutoresizingMaskIntoConstraints = false 53 | v.hidden = true 54 | return v 55 | }() 56 | 57 | override init(frame: CGRect) { 58 | super.init(frame: frame) 59 | msr_initialize() 60 | } 61 | 62 | required init?(coder aDecoder: NSCoder) { 63 | super.init(coder: aDecoder) 64 | msr_initialize() 65 | } 66 | 67 | func msr_initialize() { 68 | let vs = ["t": textField, "b": publishButton, "at": userAtView] 69 | for (_, v) in vs { 70 | addSubview(v) 71 | } 72 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-5-[t]-5-[b(==75)]|", options: [], metrics: nil, views: vs)) 73 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[t]|", options: [], metrics: nil, views: vs)) 74 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[b]|", options: [], metrics: nil, views: vs)) 75 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[at][t]", options: [], metrics: nil, views: vs)) 76 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|[at]", options: [], metrics: nil, views: vs)) 77 | clipsToBounds = false 78 | let theme = SettingsManager.defaultManager.currentTheme 79 | backgroundView = UIVisualEffectView(effect: UIBlurEffect(style: theme.backgroundBlurEffectStyle)) // bar 80 | backgroundView!.msr_borderWidth = 0.5 81 | backgroundView!.msr_borderColor = theme.borderColorA 82 | } 83 | 84 | override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool { 85 | if userAtView.pointInside(convertPoint(point, toView: userAtView), withEvent: event) { 86 | return true 87 | } 88 | return super.pointInside(point, withEvent: event) 89 | } 90 | 91 | } 92 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Others/TableViewWithKeyboardBar.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TableViewWithKeyboardBar.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/28. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TableViewWithKeyboardBar: UITableView { 12 | 13 | override func canBecomeFirstResponder() -> Bool { 14 | return true 15 | } 16 | 17 | override func canResignFirstResponder() -> Bool { 18 | return true 19 | } 20 | 21 | private var _inputAccessoryView: KeyboardBar! = nil 22 | 23 | override var inputAccessoryView: KeyboardBar { 24 | if _inputAccessoryView == nil { 25 | _inputAccessoryView = KeyboardBar(frame: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: 44)) 26 | } 27 | return _inputAccessoryView 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Others/UIImageView+DataObject.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIImageView+User.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/30. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | let defaultUserAvatar = UIImage(named: "User-DefaultAvatar") 12 | let defaultTopicImage = UIImage(named: "Topic-DefaultImage") 13 | 14 | extension UIImageView { 15 | 16 | func wc_updateWithUser(user: User?, withPlaceholder flag: Bool = true) { 17 | msr_userInfo = user 18 | image = flag ? defaultUserAvatar : nil 19 | if user?.avatar != nil { 20 | image = user!.avatar! 21 | } 22 | if user?.avatarURL != nil { 23 | user?.fetchAvatar( 24 | forced: false, 25 | success: { 26 | [weak self] in 27 | if let self_ = self { 28 | if let user_ = self_.msr_userInfo as? User { 29 | if user_.id == user?.id { 30 | self_.image = user!.avatar! 31 | } 32 | } 33 | } 34 | return 35 | }, 36 | failure: nil) 37 | } 38 | } 39 | 40 | func wc_updateWithTopic(topic: Topic?, withPlaceholder flag: Bool = true) { 41 | msr_userInfo = topic 42 | image = flag ? defaultTopicImage : nil 43 | if topic?.image != nil { 44 | image = topic!.image! 45 | } 46 | if topic?.imageURL != nil { 47 | topic?.fetchImage( 48 | success: { 49 | [weak self] in 50 | if let self_ = self { 51 | if let topic_ = self_.msr_userInfo as? Topic { 52 | if topic_.id == topic?.id { 53 | self_.image = topic!.image! 54 | } 55 | } 56 | } 57 | return 58 | }, 59 | failure: nil) 60 | } 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Question/QuestionCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/28. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class QuestionCell: UITableViewCell { 12 | 13 | @IBOutlet weak var questionTitleLabel: UILabel! 14 | @IBOutlet weak var questionBodyLabel: UILabel! 15 | @IBOutlet weak var userNameLabel: UILabel! 16 | @IBOutlet weak var dateLabel: UILabel! 17 | @IBOutlet weak var userButton: UIButton! 18 | @IBOutlet weak var questionButton: UIButton! 19 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 20 | @IBOutlet weak var userContainerView: UIView! 21 | @IBOutlet weak var questionContainerView: UIView! 22 | @IBOutlet weak var containerView: UIView! 23 | @IBOutlet weak var separator: UIView! 24 | 25 | lazy var dateFormatter: NSDateFormatter = { 26 | let f = NSDateFormatter() 27 | f.timeZone = NSTimeZone.localTimeZone() 28 | f.dateFormat = "yyyy-MM-dd HH:mm:ss" 29 | return f 30 | }() 31 | 32 | override func awakeFromNib() { 33 | super.awakeFromNib() 34 | msr_scrollView?.delaysContentTouches = false 35 | let theme = SettingsManager.defaultManager.currentTheme 36 | containerView.msr_borderColor = theme.borderColorA 37 | separator.backgroundColor = theme.borderColorA 38 | for v in [userContainerView, questionContainerView] { 39 | v.backgroundColor = theme.backgroundColorB 40 | } 41 | for v in [userButton, questionButton] { 42 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 43 | } 44 | for v in [userNameLabel, questionTitleLabel] { 45 | v.textColor = theme.titleTextColor 46 | } 47 | dateLabel.textColor = theme.footnoteTextColor 48 | questionBodyLabel.textColor = theme.subtitleTextColor 49 | } 50 | 51 | func update(question question: Question) { 52 | questionTitleLabel.text = question.title 53 | questionBodyLabel.text = question.body?.wc_plainString ?? "" 54 | userNameLabel.text = question.user?.name ?? "匿名用户" 55 | if let date = question.date { 56 | dateLabel.text = dateFormatter.stringFromDate(date) 57 | } else { 58 | dateLabel.text = "" 59 | } 60 | userAvatarView.wc_updateWithUser(question.user) 61 | userButton.msr_userInfo = question.user 62 | questionButton.msr_userInfo = question 63 | setNeedsLayout() 64 | layoutIfNeeded() 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Question/QuestionFooterCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionFooterCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/2. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class QuestionFooterCell: UITableViewCell { 12 | 13 | @IBOutlet weak var containerView: UIView! 14 | @IBOutlet weak var viewCountImageView: UIImageView! 15 | @IBOutlet weak var focusCountImageView: UIImageView! 16 | @IBOutlet weak var viewCountLabel: UILabel! 17 | @IBOutlet weak var focusCountLabel: UILabel! 18 | @IBOutlet weak var focusButton: UIButton! 19 | @IBOutlet weak var focusActivityIndicatorView: UIActivityIndicatorView! 20 | @IBOutlet weak var borderA: UIView! 21 | @IBOutlet weak var borderB: UIView! 22 | @IBOutlet weak var borderC: UIView! 23 | @IBOutlet weak var borderD: UIView! 24 | 25 | override func awakeFromNib() { 26 | super.awakeFromNib() 27 | msr_scrollView?.delaysContentTouches = false 28 | let theme = SettingsManager.defaultManager.currentTheme 29 | viewCountImageView.tintColor = theme.subtitleTextColor 30 | focusCountImageView.tintColor = theme.subtitleTextColor 31 | focusButton.msr_setBackgroundImageWithColor(theme.backgroundColorA, forState: .Highlighted) 32 | focusButton.setTitle(nil, forState: .Normal) 33 | focusButton.setTitleColor(theme.titleTextColor, forState: .Normal) 34 | containerView.backgroundColor = theme.backgroundColorB 35 | for v in [borderA, borderB, borderC, borderD] { 36 | v.backgroundColor = theme.borderColorA 37 | } 38 | viewCountLabel.textColor = theme.subtitleTextColor 39 | focusCountLabel.textColor = theme.subtitleTextColor 40 | focusActivityIndicatorView.color = theme.footnoteTextColor 41 | } 42 | 43 | func update(question question: Question) { 44 | let theme = SettingsManager.defaultManager.currentTheme 45 | viewCountLabel.text = "\(question.viewCount ?? 0)" 46 | focusCountLabel.text = "\(question.focusCount ?? 0)" 47 | if let focusing = question.focusing { 48 | focusButton.msr_setBackgroundImageWithColor(focusing ? theme.backgroundColorB : theme.backgroundColorA) 49 | focusButton.setTitle(focusing ? "已关注" : "关注", forState: .Normal) 50 | focusActivityIndicatorView.stopAnimating() 51 | } else { 52 | focusButton.setTitle(nil, forState: .Normal) 53 | focusActivityIndicatorView.startAnimating() 54 | } 55 | setNeedsLayout() 56 | layoutIfNeeded() 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Question/QuestionHeaderCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionHeaderCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/2. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class QuestionHeaderCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var userSignatureLabel: UILabel! 16 | @IBOutlet weak var userButton: UIButton! 17 | @IBOutlet weak var containerView: UIView! 18 | @IBOutlet weak var borderA: UIView! 19 | @IBOutlet weak var borderB: UIView! 20 | @IBOutlet weak var borderC: UIView! 21 | @IBOutlet weak var borderD: UIView! 22 | 23 | override func awakeFromNib() { 24 | super.awakeFromNib() 25 | msr_scrollView?.delaysContentTouches = false 26 | let theme = SettingsManager.defaultManager.currentTheme 27 | userButton.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 28 | for v in [borderA, borderB, borderC, borderD] { 29 | v.backgroundColor = theme.borderColorA 30 | } 31 | containerView.backgroundColor = theme.backgroundColorB 32 | userNameLabel.textColor = theme.titleTextColor 33 | userSignatureLabel.textColor = theme.subtitleTextColor 34 | } 35 | 36 | func update(user user: User?, updateImage: Bool) { 37 | if updateImage { 38 | userAvatarView.wc_updateWithUser(user) 39 | } 40 | userNameLabel.text = user?.name ?? "匿名用户" 41 | userSignatureLabel.text = user?.signature ?? "" 42 | userButton.msr_userInfo = user 43 | setNeedsLayout() 44 | layoutIfNeeded() 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Question/QuestionTagListCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionTagListCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/3. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import ZFTokenField 11 | 12 | class QuestionTagListCell: UITableViewCell, ZFTokenFieldDataSource, ZFTokenFieldDelegate { 13 | 14 | @IBOutlet weak var containerView: UIView! 15 | @IBOutlet weak var tagsField: ZFTokenField! 16 | @IBOutlet weak var tagsButton: UIButton! 17 | @IBOutlet weak var borderA: UIView! 18 | @IBOutlet weak var borderB: UIView! 19 | @IBOutlet weak var borderC: UIView! 20 | @IBOutlet weak var borderD: UIView! 21 | 22 | var topics = [Topic]() 23 | 24 | override func awakeFromNib() { 25 | super.awakeFromNib() 26 | msr_scrollView?.delaysContentTouches = false 27 | tagsField.editable = false 28 | tagsField.delegate = self 29 | tagsField.dataSource = self 30 | let theme = SettingsManager.defaultManager.currentTheme 31 | tagsButton.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 32 | containerView.backgroundColor = theme.backgroundColorB 33 | for v in [borderA, borderB, borderC, borderD] { 34 | v.backgroundColor = theme.borderColorA 35 | } 36 | } 37 | 38 | func update(question question: Question) { 39 | topics = question.topics.sort { 40 | $0.title! < $1.title 41 | } 42 | tagsField.reloadData() 43 | tagsButton.msr_userInfo = topics 44 | setNeedsLayout() 45 | layoutIfNeeded() 46 | } 47 | 48 | // MARK: - ZFTokenFieldDataSource 49 | 50 | func lineHeightForTokenField(tokenField: ZFTokenField!) -> CGFloat { 51 | return 24 52 | } 53 | 54 | func tokenMarginForTokenField(tokenField: ZFTokenField!) -> CGFloat { 55 | return 5 56 | } 57 | 58 | func numberOfTokensInTokenField(tokenField: ZFTokenField!) -> Int { 59 | return topics.count 60 | } 61 | 62 | func tokenField(tokenField: ZFTokenField!, viewForTokenAtIndex index: Int) -> UIView! { 63 | let tag = topics[index].title! 64 | let label = UILabel() 65 | label.text = tag 66 | label.font = UIFont.systemFontOfSize(12) 67 | label.sizeToFit() 68 | label.frame.size.height = lineHeightForTokenField(tagsField) 69 | label.frame.size.width += 20 70 | label.textAlignment = .Center 71 | label.layer.masksToBounds = true 72 | label.layer.cornerRadius = 3 73 | let theme = SettingsManager.defaultManager.currentTheme 74 | label.backgroundColor = theme.backgroundColorA 75 | label.textColor = theme.subtitleTextColor 76 | return label 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Question/QuestionTitleCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionTitleCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/2. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class QuestionTitleCell: UITableViewCell { 12 | 13 | @IBOutlet weak var questionTitleLabel: UILabel! 14 | @IBOutlet weak var containerView: UIView! 15 | @IBOutlet weak var borderA: UIView! 16 | @IBOutlet weak var borderB: UIView! 17 | 18 | override func awakeFromNib() { 19 | super.awakeFromNib() 20 | msr_scrollView?.delaysContentTouches = false 21 | let theme = SettingsManager.defaultManager.currentTheme 22 | containerView.backgroundColor = theme.backgroundColorB 23 | questionTitleLabel.textColor = theme.titleTextColor 24 | for v in [borderA, borderB] { 25 | v.backgroundColor = theme.borderColorA 26 | } 27 | } 28 | 29 | func update(question question: Question) { 30 | questionTitleLabel.text = question.title ?? "加载中" 31 | setNeedsLayout() 32 | layoutIfNeeded() 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Search/ArticleSearchResultCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ArticleSearchResultCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/6/14. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ArticleSearchResultCell: UITableViewCell { 12 | 13 | @IBOutlet weak var containerView: UIView! 14 | @IBOutlet weak var badgeLabel: UILabel! 15 | @IBOutlet weak var articleTitleLabel: UILabel! 16 | @IBOutlet weak var articleButton: UIButton! 17 | 18 | override func awakeFromNib() { 19 | super.awakeFromNib() 20 | let theme = SettingsManager.defaultManager.currentTheme 21 | for v in [containerView, badgeLabel] { 22 | v.msr_borderColor = theme.borderColorA 23 | } 24 | containerView.backgroundColor = theme.backgroundColorB 25 | badgeLabel.backgroundColor = theme.backgroundColorA 26 | articleTitleLabel.textColor = theme.titleTextColor 27 | badgeLabel.textColor = theme.footnoteTextColor 28 | articleButton.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 29 | } 30 | 31 | func update(dataObject dataObject: DataObject) { 32 | let article = dataObject as! Article 33 | articleTitleLabel.text = article.title ?? "" 34 | articleButton.msr_userInfo = article 35 | setNeedsLayout() 36 | layoutIfNeeded() 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Search/QuestionSearchResultCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionSearchResultCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/6/14. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class QuestionSearchResultCell: UITableViewCell { 12 | 13 | @IBOutlet weak var containerView: UIView! 14 | @IBOutlet weak var badgeLabel: UILabel! 15 | @IBOutlet weak var questionTitleLabel: UILabel! 16 | @IBOutlet weak var questionButton: UIButton! 17 | 18 | override func awakeFromNib() { 19 | super.awakeFromNib() 20 | let theme = SettingsManager.defaultManager.currentTheme 21 | for v in [containerView, badgeLabel] { 22 | v.msr_borderColor = theme.borderColorA 23 | } 24 | containerView.backgroundColor = theme.backgroundColorB 25 | badgeLabel.backgroundColor = theme.backgroundColorA 26 | questionTitleLabel.textColor = theme.titleTextColor 27 | badgeLabel.textColor = theme.footnoteTextColor 28 | questionButton.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 29 | } 30 | 31 | func update(dataObject dataObject: DataObject) { 32 | let question = dataObject as! Question 33 | questionTitleLabel.text = question.title ?? "" 34 | questionButton.msr_userInfo = question 35 | setNeedsLayout() 36 | layoutIfNeeded() 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Search/TopicSearchResultCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TopicSearchResultCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/6/14. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TopicSearchResultCell: UITableViewCell { 12 | 13 | @IBOutlet weak var containerView: UIView! 14 | @IBOutlet weak var badgeLabel: UILabel! 15 | @IBOutlet weak var topicImageView: UIImageView! 16 | @IBOutlet weak var topicTitleLabel: UILabel! 17 | @IBOutlet weak var topicDescriptionLabel: UILabel! 18 | @IBOutlet weak var topicButton: UIButton! 19 | 20 | override func awakeFromNib() { 21 | super.awakeFromNib() 22 | let theme = SettingsManager.defaultManager.currentTheme 23 | for v in [containerView, badgeLabel] { 24 | v.msr_borderColor = theme.borderColorA 25 | } 26 | containerView.backgroundColor = theme.backgroundColorB 27 | badgeLabel.backgroundColor = theme.backgroundColorA 28 | topicTitleLabel.textColor = theme.titleTextColor 29 | topicDescriptionLabel.textColor = theme.subtitleTextColor 30 | badgeLabel.textColor = theme.footnoteTextColor 31 | topicButton.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 32 | } 33 | 34 | func update(dataObject dataObject: DataObject) { 35 | let topic = dataObject as! Topic 36 | topicTitleLabel.text = topic.title 37 | topicDescriptionLabel.text = topic.introduction ?? "" 38 | topicImageView.wc_updateWithTopic(topic) 39 | topicButton.msr_userInfo = topic 40 | setNeedsLayout() 41 | layoutIfNeeded() 42 | } 43 | 44 | } 45 | 46 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Search/UserSearchResultCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserSearchResultCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/6/14. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class UserSearchResultCell: UITableViewCell { 12 | 13 | @IBOutlet weak var containerView: UIView! 14 | @IBOutlet weak var badgeLabel: UILabel! 15 | @IBOutlet weak var userAvatarView: UIImageView! 16 | @IBOutlet weak var userNameLabel: UILabel! 17 | @IBOutlet weak var userSignatureLabel: UILabel! 18 | @IBOutlet weak var userButton: UIButton! 19 | 20 | override func awakeFromNib() { 21 | super.awakeFromNib() 22 | let theme = SettingsManager.defaultManager.currentTheme 23 | for v in [containerView, badgeLabel] { 24 | v.msr_borderColor = theme.borderColorA 25 | } 26 | containerView.backgroundColor = theme.backgroundColorB 27 | badgeLabel.backgroundColor = theme.backgroundColorA 28 | userNameLabel.textColor = theme.titleTextColor 29 | userSignatureLabel.textColor = theme.subtitleTextColor 30 | badgeLabel.textColor = theme.footnoteTextColor 31 | userButton.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 32 | } 33 | 34 | func update(dataObject dataObject: DataObject) { 35 | let user = dataObject as! User 36 | userNameLabel.text = user.name 37 | userSignatureLabel.text = user.signature ?? "" 38 | userAvatarView.wc_updateWithUser(user) 39 | userButton.msr_userInfo = user 40 | setNeedsLayout() 41 | layoutIfNeeded() 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Sidebar/SidebarCategoryCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SidebarCategoryCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/3/31. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class SidebarCategoryCell: UITableViewCell { 12 | 13 | @IBOutlet weak var categoryImageView: UIImageView! 14 | @IBOutlet weak var categoryTitleLabel: UILabel! 15 | 16 | var category: SidebarCategory? 17 | 18 | override func awakeFromNib() { 19 | super.awakeFromNib() 20 | selectedBackgroundView = UIView() 21 | msr_scrollView?.delaysContentTouches = false 22 | } 23 | 24 | func update(category category: SidebarCategory) { 25 | self.category = category 26 | categoryImageView.image = imageFromSidebarCategory(category) 27 | categoryTitleLabel.text = localizedStringFromSidebarCategory(category) 28 | updateTheme() 29 | setNeedsLayout() 30 | layoutIfNeeded() 31 | } 32 | 33 | func updateTheme() { 34 | let theme = SettingsManager.defaultManager.currentTheme 35 | categoryImageView.tintColor = theme.titleTextColor 36 | categoryTitleLabel.textColor = theme.titleTextColor 37 | selectedBackgroundView!.backgroundColor = theme.highlightColor 38 | } 39 | 40 | override func prepareForReuse() { 41 | category = nil 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Sidebar/SidebarLogoutCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SidebarLogoutCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/8/15. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class SidebarLogoutCell: UITableViewCell { 12 | 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Sidebar/SidebarLogoutCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Sidebar/SidebarUserView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SidebarUserView.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/29. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import GBDeviceInfo 10 | import UIKit 11 | 12 | class SidebarUserView: UIView { 13 | 14 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 15 | @IBOutlet weak var userNameLabel: UILabel! 16 | @IBOutlet weak var userSignatureLabel: UILabel! 17 | @IBOutlet weak var overlay: UIView! 18 | 19 | func update(user user: User?) { 20 | userAvatarView.wc_updateWithUser(user) 21 | userNameLabel.text = user?.name ?? "加载中……" 22 | userSignatureLabel.text = user?.signature ?? "说点什么吧……" 23 | layoutIfNeeded() 24 | } 25 | 26 | lazy var minHeight: CGFloat = { 27 | let display = GBDeviceInfo.deviceInfo().display 28 | let heights: [GBDeviceDisplay: CGFloat] = [ 29 | .DisplayUnknown: 220, 30 | .DisplayiPad: 220, 31 | .DisplayiPhone35Inch: 170, 32 | .DisplayiPhone4Inch: 170, 33 | .DisplayiPhone47Inch: 200, 34 | .DisplayiPhone55Inch: 220] 35 | return heights[display]! 36 | }() 37 | 38 | } 39 | -------------------------------------------------------------------------------- /WeCenterMobile/View/Topic/TopicCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TopicCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/11. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class TopicCell: UITableViewCell { 12 | 13 | @IBOutlet weak var topicImageView: MSRRoundedImageView! 14 | @IBOutlet weak var topicTitleLabel: UILabel! 15 | @IBOutlet weak var topicDescriptionLabel: UILabel! 16 | @IBOutlet weak var topicButtonA: UIButton! 17 | @IBOutlet weak var topicButtonB: UIButton! 18 | @IBOutlet weak var containerView: UIView! 19 | 20 | override func awakeFromNib() { 21 | super.awakeFromNib() 22 | let theme = SettingsManager.defaultManager.currentTheme 23 | msr_scrollView?.delaysContentTouches = false 24 | containerView.msr_borderColor = theme.borderColorA 25 | containerView.backgroundColor = theme.backgroundColorB 26 | topicTitleLabel.textColor = theme.titleTextColor 27 | topicDescriptionLabel.textColor = theme.subtitleTextColor 28 | topicButtonB.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 29 | } 30 | 31 | func update(topic topic: Topic) { 32 | topicImageView.wc_updateWithTopic(topic) 33 | topicTitleLabel.text = topic.title 34 | /// @TODO: [Bug][Back-End] \n!!! 35 | topicDescriptionLabel.text = topic.introduction?.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet()) 36 | topicButtonA.msr_userInfo = topic 37 | topicButtonB.msr_userInfo = topic 38 | setNeedsLayout() 39 | layoutIfNeeded() 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /WeCenterMobile/View/User/UserAtView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserAtView.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/5/5. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objc class UserAtView: UIView { 12 | 13 | var backgroundView: UIView? { 14 | didSet { 15 | oldValue?.removeFromSuperview() 16 | if backgroundView != nil { 17 | addSubview(backgroundView!) 18 | sendSubviewToBack(backgroundView!) 19 | backgroundView!.translatesAutoresizingMaskIntoConstraints = true 20 | backgroundView!.frame = bounds 21 | backgroundView!.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 22 | } 23 | } 24 | } 25 | 26 | lazy var atLabel: UILabel = { 27 | let v = UILabel() 28 | let theme = SettingsManager.defaultManager.currentTheme 29 | v.translatesAutoresizingMaskIntoConstraints = false 30 | v.font = UIFont.systemFontOfSize(14) 31 | v.text = "@" 32 | v.textAlignment = .Center 33 | v.textColor = theme.footnoteTextColor 34 | v.backgroundColor = theme.backgroundColorA 35 | return v 36 | }() 37 | 38 | lazy var userNameLabel: UILabel = { 39 | let v = UILabel() 40 | let theme = SettingsManager.defaultManager.currentTheme 41 | v.translatesAutoresizingMaskIntoConstraints = false 42 | v.font = UIFont.systemFontOfSize(12) 43 | v.text = "用户名" 44 | v.textColor = theme.subtitleTextColor 45 | return v 46 | }() 47 | 48 | lazy var removeImageView: UIImageView = { 49 | let v = UIImageView(image: UITextField.msr_defaltClearButton().imageForState(.Highlighted)) 50 | let theme = SettingsManager.defaultManager.currentTheme 51 | v.translatesAutoresizingMaskIntoConstraints = false 52 | v.tintColor = theme.footnoteTextColor 53 | return v 54 | }() 55 | 56 | lazy var removeButton: UIButton = { 57 | let v = UIButton() 58 | let theme = SettingsManager.defaultManager.currentTheme 59 | v.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 60 | v.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 61 | return v 62 | }() 63 | 64 | required init?(coder aDecoder: NSCoder) { 65 | super.init(coder: aDecoder) 66 | wc_initialize() 67 | } 68 | 69 | override init(frame: CGRect) { 70 | super.init(frame: frame) 71 | wc_initialize() 72 | } 73 | 74 | func wc_initialize() { 75 | let theme = SettingsManager.defaultManager.currentTheme 76 | msr_borderWidth = 0.5 77 | msr_borderColor = theme.borderColorA 78 | for v in [atLabel, userNameLabel, removeImageView, removeButton] { 79 | addSubview(v) 80 | } 81 | let vs = ["l": userNameLabel, "x": removeImageView, "at": atLabel] 82 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|[at(20)]-5-[l]-5-[x]-5-|", options: [], metrics: nil, views: vs)) 83 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-(>=5)-[l]-(>=5)-|", options: [], metrics: nil, views: vs)) 84 | addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-(>=5)-[x]-(>=5)-|", options: [], metrics: nil, views: vs)) 85 | atLabel.msr_addVerticalEdgeAttachedConstraintsToSuperview() 86 | userNameLabel.msr_addCenterYConstraintToSuperview() 87 | removeImageView.msr_addCenterYConstraintToSuperview() 88 | removeButton.frame = bounds 89 | backgroundView = UIVisualEffectView(effect: UIBlurEffect(style: theme.backgroundBlurEffectStyle)) 90 | } 91 | 92 | } 93 | -------------------------------------------------------------------------------- /WeCenterMobile/View/User/UserBodyCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserBodyCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/10. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class UserBodyCell: UICollectionViewCell { 12 | 13 | @IBOutlet weak var countLabel: UILabel! 14 | @IBOutlet weak var titleLabel: UILabel! 15 | 16 | override func awakeFromNib() { 17 | super.awakeFromNib() 18 | selectedBackgroundView = UIView() 19 | selectedBackgroundView!.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.2) 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /WeCenterMobile/View/User/UserCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/10. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class UserCell: UITableViewCell { 12 | 13 | @IBOutlet weak var userAvatarView: MSRRoundedImageView! 14 | @IBOutlet weak var userNameLabel: UILabel! 15 | @IBOutlet weak var userSignatureLabel: UILabel! 16 | @IBOutlet weak var userButtonA: UIButton! 17 | @IBOutlet weak var userButtonB: UIButton! 18 | @IBOutlet weak var containerView: UIView! 19 | 20 | override func awakeFromNib() { 21 | super.awakeFromNib() 22 | let theme = SettingsManager.defaultManager.currentTheme 23 | msr_scrollView?.delaysContentTouches = false 24 | containerView.msr_borderColor = theme.borderColorA 25 | containerView.backgroundColor = theme.backgroundColorB 26 | userNameLabel.textColor = theme.titleTextColor 27 | userSignatureLabel.textColor = theme.subtitleTextColor 28 | userButtonB.msr_setBackgroundImageWithColor(theme.highlightColor, forState: .Highlighted) 29 | } 30 | 31 | func update(user user: User) { 32 | userAvatarView.wc_updateWithUser(user) 33 | userNameLabel.text = user.name 34 | /// @TODO: [Bug][Back-End] \n!!! 35 | userSignatureLabel.text = user.signature?.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet()) 36 | userButtonA.msr_userInfo = user 37 | userButtonB.msr_userInfo = user 38 | setNeedsLayout() 39 | layoutIfNeeded() 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /WeCenterMobile/View/User/UserFooterCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UserFooterCell.swift 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 15/4/10. 6 | // Copyright (c) 2015年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class UserFooterCell: UICollectionViewCell { 12 | 13 | @IBOutlet weak var textLabel: UILabel! 14 | @IBOutlet weak var activityIndicatorView: UIActivityIndicatorView! 15 | 16 | override func awakeFromNib() { 17 | super.awakeFromNib() 18 | selectedBackgroundView = UIView() 19 | selectedBackgroundView!.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.2) 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /WeCenterMobile/View/User/UserFooterCell.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /WeCenterMobile/WeCenterMobile.pch: -------------------------------------------------------------------------------- 1 | // 2 | // WeCenterMobile.pch 3 | // WeCenterMobile 4 | // 5 | // Created by Darren Liu on 14/9/11. 6 | // Copyright (c) 2014年 ifLab. All rights reserved. 7 | // 8 | 9 | #ifdef __OBJC__ 10 | 11 | @import UIKit; 12 | 13 | #endif 14 | -------------------------------------------------------------------------------- /WeCenterMobile/WeCenterMobile.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | WeCenterMobile.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /WeCenterMobileTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /WeCenterMobileTests/WeCenterMobileTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WeCenterMobileTests.swift 3 | // WeCenterMobileTests 4 | // 5 | // Created by Darren Liu on 14/11/20. 6 | // Copyright (c) 2014年 Beijing Information Science and Technology University. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import XCTest 11 | 12 | class WeCenterMobileTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | XCTAssert(true, "Pass") 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measureBlock() { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | --------------------------------------------------------------------------------