├── LICENSE ├── QMUICommonTableViewController ├── ___FILEBASENAME___.h └── ___FILEBASENAME___.m ├── QMUICommonViewController ├── ___FILEBASENAME___.h └── ___FILEBASENAME___.m ├── QMUINavigationController ├── ___FILEBASENAME___.h └── ___FILEBASENAME___.m ├── QMUIPopupContainerView ├── ___FILEBASENAME___.h └── ___FILEBASENAME___.m ├── QMUITabBarViewController ├── ___FILEBASENAME___.h └── ___FILEBASENAME___.m ├── QMUITableViewCell ├── ___FILEBASENAME___.h └── ___FILEBASENAME___.m ├── README.md ├── TemplateIcon.png ├── TemplateIcon@2x.png ├── TemplateInfo.plist └── UIView ├── ___FILEBASENAME___.h └── ___FILEBASENAME___.m /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 QMUI 团队 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /QMUICommonTableViewController/___FILEBASENAME___.h: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | ___IMPORTHEADER_cocoaTouchSubclass___ 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /QMUICommonTableViewController/___FILEBASENAME___.m: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | #import "___FILEBASENAME___.h" 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ () 12 | 13 | @end 14 | 15 | @implementation ___FILEBASENAMEASIDENTIFIER___ 16 | 17 | - (void)didInitializeWithStyle:(UITableViewStyle)style { 18 | [super didInitializeWithStyle:style]; 19 | // init 时做的事情请写在这里 20 | } 21 | 22 | - (void)initTableView { 23 | [super initTableView]; 24 | // 对 self.tableView 的操作写在这里 25 | } 26 | 27 | - (void)viewDidLoad { 28 | [super viewDidLoad]; 29 | // 对 self.view 的操作写在这里 30 | } 31 | 32 | - (void)viewWillAppear:(BOOL)animated { 33 | [super viewWillAppear:animated]; 34 | } 35 | 36 | - (void)viewDidAppear:(BOOL)animated { 37 | [super viewDidAppear:animated]; 38 | } 39 | 40 | - (void)viewWillDisappear:(BOOL)animated { 41 | [super viewWillDisappear:animated]; 42 | } 43 | 44 | - (void)viewDidDisappear:(BOOL)animated { 45 | [super viewDidDisappear:animated]; 46 | } 47 | 48 | - (void)viewDidLayoutSubviews { 49 | [super viewDidLayoutSubviews]; 50 | } 51 | 52 | - (void)setupNavigationItems { 53 | [super setupNavigationItems]; 54 | self.title = @"<##>"; 55 | } 56 | 57 | #pragma mark - 58 | 59 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 60 | return 0; 61 | } 62 | 63 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 64 | return nil; 65 | } 66 | 67 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 68 | 69 | } 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /QMUICommonViewController/___FILEBASENAME___.h: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | ___IMPORTHEADER_cocoaTouchSubclass___ 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /QMUICommonViewController/___FILEBASENAME___.m: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | #import "___FILEBASENAME___.h" 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ () 12 | 13 | @end 14 | 15 | @implementation ___FILEBASENAMEASIDENTIFIER___ 16 | 17 | - (void)didInitialize { 18 | [super didInitialize]; 19 | // init 时做的事情请写在这里 20 | } 21 | 22 | - (void)initSubviews { 23 | [super initSubviews]; 24 | // 对 subviews 的初始化写在这里 25 | } 26 | 27 | - (void)viewDidLoad { 28 | [super viewDidLoad]; 29 | // 对 self.view 的操作写在这里 30 | } 31 | 32 | - (void)viewWillAppear:(BOOL)animated { 33 | [super viewWillAppear:animated]; 34 | } 35 | 36 | - (void)viewDidAppear:(BOOL)animated { 37 | [super viewDidAppear:animated]; 38 | } 39 | 40 | - (void)viewWillDisappear:(BOOL)animated { 41 | [super viewWillDisappear:animated]; 42 | } 43 | 44 | - (void)viewDidDisappear:(BOOL)animated { 45 | [super viewDidDisappear:animated]; 46 | } 47 | 48 | - (void)viewDidLayoutSubviews { 49 | [super viewDidLayoutSubviews]; 50 | } 51 | 52 | - (void)setupNavigationItems { 53 | [super setupNavigationItems]; 54 | self.title = @"<##>"; 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /QMUINavigationController/___FILEBASENAME___.h: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | ___IMPORTHEADER_cocoaTouchSubclass___ 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /QMUINavigationController/___FILEBASENAME___.m: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | #import "___FILEBASENAME___.h" 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ () 12 | 13 | @end 14 | 15 | @implementation ___FILEBASENAMEASIDENTIFIER___ 16 | 17 | - (void)didInitialize { 18 | [super didInitialize]; 19 | // init 时做的事情请写在这里 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /QMUIPopupContainerView/___FILEBASENAME___.h: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | ___IMPORTHEADER_cocoaTouchSubclass___ 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /QMUIPopupContainerView/___FILEBASENAME___.m: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | #import "___FILEBASENAME___.h" 10 | 11 | @implementation ___FILEBASENAMEASIDENTIFIER___ 12 | 13 | - (void)didInitialize { 14 | [super didInitialize]; 15 | // init 时做的事情请写在这里,subview 请添加到 self.contentView 上 16 | } 17 | 18 | - (CGSize)sizeThatFitsInContentView:(CGSize)size { 19 | // 在这里计算当前控件的 subviews 大小,注意不需要包含 self.contentEdgeInsets 20 | return size; 21 | } 22 | 23 | - (void)layoutSubviews { 24 | [super layoutSubviews]; 25 | // 所有 subviews 请参照 self.contentView 布局 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /QMUITabBarViewController/___FILEBASENAME___.h: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | ___IMPORTHEADER_cocoaTouchSubclass___ 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /QMUITabBarViewController/___FILEBASENAME___.m: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | #import "___FILEBASENAME___.h" 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ () 12 | 13 | @end 14 | 15 | @implementation ___FILEBASENAMEASIDENTIFIER___ 16 | 17 | - (void)didInitialize { 18 | [super didInitialize]; 19 | // init 时做的事情请写在这里 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /QMUITableViewCell/___FILEBASENAME___.h: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | ___IMPORTHEADER_cocoaTouchSubclass___ 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /QMUITableViewCell/___FILEBASENAME___.m: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | #import "___FILEBASENAME___.h" 10 | 11 | @implementation ___FILEBASENAMEASIDENTIFIER___ 12 | 13 | - (void)didInitializeWithStyle:(UITableViewCellStyle)style { 14 | [super didInitializeWithStyle:style]; 15 | // init 时做的事情请写在这里 16 | } 17 | 18 | - (void)updateCellAppearanceWithIndexPath:(NSIndexPath *)indexPath { 19 | [super updateCellAppearanceWithIndexPath:indexPath]; 20 | // 每次 cellForRow 时都要做的事情请写在这里 21 | } 22 | 23 | - (void)layoutSubviews { 24 | [super layoutSubviews]; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # QMUI_iOS_Templates 2 | 当我们在 Xcode 里新建文件时,Xcode 默认提供了多种文件模板,并且不同的 class,模板里默认提供的内容也不一样。 3 | 4 | 这个项目主要是配合 [QMUI iOS](https://github.com/QMUI/QMUI_iOS) 使用,为 QMUI iOS 里常用的几个基类提供模板,另外系统的 UIKit 里的一些常用类也有相应的模板提供,具体请查看项目文件。 5 | 6 | ## 使用方式 7 | 进入 Xcode 模板存放路径: 8 | ``` 9 | cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File\ Templates/Source 10 | ``` 11 | 12 | 将项目拉取下来,并命名为 `QMUI Class.xctemplate`(文件夹名自由定义,后缀名不可变),注意这个目录是系统目录,需要 root 权限才能修改,所以所有 git 命令都需要加 `sudo`。 13 | ```bash 14 | sudo git clone https://github.com/QMUI/QMUI_iOS_Templates.git QMUI\ Class.xctemplate 15 | ``` 16 | 17 | 无需重启 Xcode,直接新建文件,即可看到“QMUI Class”的模板可供选择。 18 | 19 | ![](https://cloud.githubusercontent.com/assets/1190261/24793746/c1dff3e2-1bb5-11e7-985d-518c3cd9bcf7.png) 20 | -------------------------------------------------------------------------------- /TemplateIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMUI/QMUI_iOS_Templates/367ea87ea0d54430481210bfcf2bded3e53fb56a/TemplateIcon.png -------------------------------------------------------------------------------- /TemplateIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMUI/QMUI_iOS_Templates/367ea87ea0d54430481210bfcf2bded3e53fb56a/TemplateIcon@2x.png -------------------------------------------------------------------------------- /TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kind 6 | Xcode.IDEFoundation.TextSubstitutionFileTemplateKind 7 | Description 8 | QMUI iOS 框架的基础类 9 | Summary 10 | QMUI iOS 框架的基础类 11 | SortOrder 12 | 0 13 | DefaultCompletionName 14 | MyClass 15 | Platforms 16 | 17 | com.apple.platform.iphoneos 18 | 19 | Options 20 | 21 | 22 | Identifier 23 | productName 24 | Required 25 | 26 | Name 27 | Class: 28 | Description 29 | The name of the class to create 30 | Type 31 | text 32 | NotPersisted 33 | 34 | 35 | 36 | Identifier 37 | cocoaTouchSubclass 38 | Required 39 | YES 40 | Name 41 | Subclass of: 42 | Description 43 | What class to subclass in the new file 44 | Type 45 | class 46 | Default 47 | NSObject 48 | FallbackHeader 49 | #import <QMUIKit/QMUIKit.h> 50 | Values 51 | 52 | QMUICommonViewController 53 | QMUICommonTableViewController 54 | QMUINavigationController 55 | QMUITabBarViewController 56 | QMUIPopupContainerView 57 | QMUITableViewCell 58 | UIView 59 | 60 | Suffixes 61 | 62 | QMUICommonViewController 63 | ViewController 64 | QMUICommonTableViewController 65 | TableViewController 66 | QMUINavigationController 67 | NavigationController 68 | QMUITabBarViewController 69 | TabBarViewController 70 | QMUIPopupContainerView 71 | PopupView 72 | QMUITableViewCell 73 | TableViewCell 74 | UIView 75 | View 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /UIView/___FILEBASENAME___.h: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | ___IMPORTHEADER_cocoaTouchSubclass___ 10 | 11 | @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /UIView/___FILEBASENAME___.m: -------------------------------------------------------------------------------- 1 | // 2 | // ___FILENAME___ 3 | // ___PROJECTNAME___ 4 | // 5 | // Created by ___FULLUSERNAME___ on ___DATE___. 6 | // ___COPYRIGHT___ 7 | // 8 | 9 | #import "___FILEBASENAME___.h" 10 | 11 | @implementation ___FILEBASENAMEASIDENTIFIER___ 12 | 13 | - (instancetype)initWithFrame:(CGRect)frame { 14 | if (self = [super initWithFrame:frame]) { 15 | 16 | } 17 | return self; 18 | } 19 | 20 | - (void)layoutSubviews { 21 | [super layoutSubviews]; 22 | } 23 | 24 | @end 25 | --------------------------------------------------------------------------------