Code snippets for Xcode.
A set of snippets for Xcode.
Xcode 7.3.1 or later.
To install or update the snippets you need:
cd ~/Downloads
git clone https://github.com/ismetanin/XcodeCodeSnippets
mkdir -p $HOME/Library/Developer/Xcode/UserData/CodeSnippets
cp XcodeCodeSnippets/CodeSnippets/* $HOME/Library/Developer/Xcode/UserData/CodeSnippets
rm -rf XcodeCodeSnippets
Or if you have a cloned repository:
sh ./install.sh
There are MARKs for Swift and Objective-C. For Swift there is prefix before each // MARK: -
and for Objective-C prefix is #pragma mark -
.
Shortcuts are equal to snippet body for example for // MARK: - Properties
shortcut is Properties
.
Snippet |
---|
Just empty mark (// MARK: - or #pragma mark - ) |
Nested types |
Constants |
Subviews |
NSLayoutConstraints |
Properties |
Public properties |
Readonly properties |
IBOutlets |
Initialization and deinitialization |
UITableViewCell |
UIViewController |
Actions |
IBActions |
Public methods |
Internal methods |
Private methods |
A template for creating TableViewAdapter, shortcut: Table View Adapter
import UIKit
protocol <#Your#>TableViewAdapterOutput {
}
final class <#Your#>TableViewAdapter: NSObject {
// MARK: - Properties
private let output: <#Your#>TableViewAdapterOutput
private var items: [String]
private var tableView: UITableView
// MARK: - Initialization and deinitialization
init(tableView: UITableView, output: <#Your#>TableViewAdapterOutput) {
self.output = output
self.tableView = tableView
self.items = []
super.init()
setupTable()
}
// MARK: - Internal methods
func configure(with items: [String]) {
self.items = items
tableView.reloadData()
}
// MARK: - Private methods
private func setupTable() {
tableView.delegate = self
tableView.dataSource = self
tableView.register(
UINib(nibName: String(describing: <#Your#>TableViewCell.self), bundle: nil),
forCellReuseIdentifier: String(describing: <#Your#>TableViewCell.self)
)
}
}
// MARK: - UITableViewDataSource
extension <#Your#>TableViewAdapter: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(
withIdentifier: String(describing: <#Your#>TableViewCell.self),
for: indexPath
) as? TableViewCell
cell?.backgroundColor = .red
return cell ?? <#Your#>UITableViewCell()
}
}
// MARK: - UITableViewDelegate
extension <#Your#>TableViewAdapter: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
}
A code block for creating user property in UserDefaults extension, shortcut: Defaults Key
var <#defaultsKey#>: <#Type#> {
get { return <#typeof#>(forKey: #function) }
set { set(newValue, forKey: #function) }
}
A code block for layouting child view anchors equal to the parent view anchors, shortcut: Constraints - layout child as parent
<#childView#>.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
<#childView#>.topAnchor.constraint(equalTo: <#parentView#>.safeAreaLayoutGuide.topAnchor, constant: 0),
<#childView#>.bottomAnchor.constraint(equalTo: <#parentView#>.safeAreaLayoutGuide.bottomAnchor, constant: 0),
<#childView#>.leadingAnchor.constraint(equalTo: <#parentView#>.safeAreaLayoutGuide.leadingAnchor, constant: 0),
<#childView#>.trailingAnchor.constraint(equalTo: <#parentView#>.safeAreaLayoutGuide.trailingAnchor, constant: 0)
])
A code block for user property creating in NSNotification.Name extension, shortcut: NSNotification Name
static let <#notificationName#> = NSNotification.Name("<#projectName#>.notifications.<#notificationName#>")
A code block for creating template comments for unit test, shortcut: testtemplate
// given
// when
// then
A code block for creating template constants enum, shortcut: Constants enum
// MARK: - Nested types
private enum Constants {
}
A code block for creating keyboard notifications detector, shortcut: Keyboard detector
func addKeyboardObservers() {
NotificationCenter.default.addObserver(self,
selector: #selector(keyboardWillShow),
name: UIResponder.keyboardWillShowNotification,
object: nil)
NotificationCenter.default.addObserver(self,
selector: #selector(keyboardWillHide),
name: UIResponder.keyboardWillHideNotification,
object: nil)
}
@objc
func keyboardWillShow(notification: NSNotification) {
guard
let frame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue
else {
return
}
}
@objc
func keyboardWillHide() {
}
Ivan Smetanin, [email protected]
XcodeCodeSnippets is available under the MIT license. See the LICENSE file for more info.