├── .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 [](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 |
--------------------------------------------------------------------------------