Initial commit
10
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# See LICENSE folder for this sample’s licensing information.
|
||||||
|
#
|
||||||
|
# Apple sample code gitignore configuration.
|
||||||
|
|
||||||
|
# Finder
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Xcode - User files
|
||||||
|
xcuserdata/
|
||||||
|
*.xcworkspace
|
||||||
13
Configuration/SampleCode.xcconfig
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
//
|
||||||
|
// See LICENSE folder for this sample’s licensing information.
|
||||||
|
//
|
||||||
|
// SampleCode.xcconfig
|
||||||
|
//
|
||||||
|
|
||||||
|
// The `SAMPLE_CODE_DISAMBIGUATOR` configuration is to make it easier to build
|
||||||
|
// and run a sample code project. Once you set your project's development team,
|
||||||
|
// you'll have a unique bundle identifier. This is because the bundle identifier
|
||||||
|
// is derived based on the 'SAMPLE_CODE_DISAMBIGUATOR' value. Do not use this
|
||||||
|
// approach in your own projects—it's only useful for sample code projects because
|
||||||
|
// they are frequently downloaded and don't have a development team set.
|
||||||
|
SAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM}
|
||||||
8
LICENSE/LICENSE.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
Copyright © 2018 Apple Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
202
README.md
Normal file
|
|
@ -0,0 +1,202 @@
|
||||||
|
# UIKitCatalog: Creating and Customizing Views and Controls
|
||||||
|
|
||||||
|
Customize your app's user interface by using views and controls in UIKit.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This sample guides you through several types of customizations that you can do in your iOS app. The sample uses a split view controller architecture for navigating UIKit views and controls. The primary view controller (`MasterViewController`) shows the available views and controls. Selecting one shows the secondary view controller associated with it.
|
||||||
|
|
||||||
|
The name of each secondary view controller reflects its *target item*. For example, the `AlertControllerViewController` class shows how to use a `UIAlertController` object. The only exceptions to this rule are `UISearchBar` and `UIToolbar`; these APIs are demonstrated in multiple view controllers to explain how their controls function and how to customize them. To demonstrate how to manage the complexity of your storyboards, all view controllers are hosted in a separate storyboard and loaded when needed.
|
||||||
|
|
||||||
|
This sample demonstrates the following views and controls (several of which are referenced in the sections below):
|
||||||
|
|
||||||
|
* [`UIActivityIndicatorView`](https://developer.apple.com/documentation/uikit/uiactivityindicatorview)
|
||||||
|
* [`UIAlertController`](https://developer.apple.com/documentation/uikit/uialertcontroller)
|
||||||
|
* [`UIButton`](https://developer.apple.com/documentation/uikit/uibutton)
|
||||||
|
* [`UIDatePicker`](https://developer.apple.com/documentation/uikit/uidatepicker)
|
||||||
|
* [`UIImageView`](https://developer.apple.com/documentation/uikit/uiimageview)
|
||||||
|
* [`UIPageControl`](https://developer.apple.com/documentation/uikit/uipagecontrol)
|
||||||
|
* [`UIPickerView`](https://developer.apple.com/documentation/uikit/uipickerview)
|
||||||
|
* [`UIProgressView`](https://developer.apple.com/documentation/uikit/uiprogressview)
|
||||||
|
* [`UISearchBar`](https://developer.apple.com/documentation/uikit/uisearchbar)
|
||||||
|
* [`UISegmentedControl`](https://developer.apple.com/documentation/uikit/uisegmentedcontrol)
|
||||||
|
* [`UISlider`](https://developer.apple.com/documentation/uikit/uislider)
|
||||||
|
* [`UIStackView`](https://developer.apple.com/documentation/uikit/uistackview)
|
||||||
|
* [`UIStepper`](https://developer.apple.com/documentation/uikit/uistepper)
|
||||||
|
* [`UISwitch`](https://developer.apple.com/documentation/uikit/uiswitch)
|
||||||
|
* [`UITextField`](https://developer.apple.com/documentation/uikit/uitextfield)
|
||||||
|
* [`UITextView`](https://developer.apple.com/documentation/uikit/uitextview)
|
||||||
|
* [`UIToolbar`](https://developer.apple.com/documentation/uikit/uitoolbar)
|
||||||
|
* [`WKWebView`](https://developer.apple.com/documentation/webkit/wkwebview)
|
||||||
|
|
||||||
|
## Add Accessibility Support to Your Views
|
||||||
|
|
||||||
|
VoiceOver and other system accessibility technologies use the information provided by your views and controls to help all users navigate your content. UIKit views include default accessibility support, but you can improve the user experience by providing custom accessibility information.
|
||||||
|
|
||||||
|
In this UIKitCatalog sample, several view controllers configure the `accessibilityType` and `accessibilityLabel` properties of their associated view. Picker view columns don't have labels, so the picker view asks its delegate for the corresponding accessibility information:
|
||||||
|
|
||||||
|
``` swift
|
||||||
|
func pickerView(_ pickerView: UIPickerView, accessibilityLabelForComponent component: Int) -> String? {
|
||||||
|
|
||||||
|
switch ColorComponent(rawValue: component)! {
|
||||||
|
case .red:
|
||||||
|
return NSLocalizedString("Red color component value", comment: "")
|
||||||
|
|
||||||
|
case .green:
|
||||||
|
return NSLocalizedString("Green color component value", comment: "")
|
||||||
|
|
||||||
|
case .blue:
|
||||||
|
return NSLocalizedString("Blue color component value", comment: "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Display a Custom Alert
|
||||||
|
|
||||||
|
`AlertControllerViewController` demonstrates several techniques for displaying modal alerts and action sheets from your interface. The configuration process is similar for all alerts:
|
||||||
|
|
||||||
|
1. Determine the message you want to display in the alert.
|
||||||
|
2. Create and configure a `UIAlertController` object.
|
||||||
|
3. Add handlers for actions that the user may take.
|
||||||
|
4. Present the alert controller.
|
||||||
|
|
||||||
|
The `showSimpleAlert` function uses the `NSLocalizedString` function to retrieve the alert messages in the user’s preferred language. This function uses those strings to create and configure the `UIAlertController` object. Although the button in the alert has the title OK, the sample uses a cancel action to ensure that the alert controller applies the proper styling to the button:
|
||||||
|
|
||||||
|
``` swift
|
||||||
|
func showSimpleAlert() {
|
||||||
|
let title = NSLocalizedString("A Short Title is Best", comment: "")
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let cancelButtonTitle = NSLocalizedString("OK", comment: "")
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
||||||
|
|
||||||
|
// Create the action.
|
||||||
|
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .cancel) { _ in
|
||||||
|
print("The simple alert's cancel action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the action.
|
||||||
|
alertController.addAction(cancelAction)
|
||||||
|
|
||||||
|
present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Customize the Appearance of Sliders
|
||||||
|
|
||||||
|
This sample demonstrates different ways to display a `UISlider`, a control used to select a single value from a continuous range of values. You customize the appearance of a slider by assigning stretchable images for left-side tracking, right-side tracking, and the thumb. In this example, the track image is stretchable and is one pixel wide. Make the track images wider to provide rounded corners, but be sure to set these images' `capInsets` property to allow for them.
|
||||||
|
|
||||||
|
The `configureCustomSlider` function sets up a custom slider:
|
||||||
|
|
||||||
|
``` swift
|
||||||
|
func configureCustomSlider() {
|
||||||
|
let leftTrackImage = UIImage(named: "slider_blue_track")
|
||||||
|
customSlider.setMinimumTrackImage(leftTrackImage, for: .normal)
|
||||||
|
|
||||||
|
let rightTrackImage = UIImage(named: "slider_green_track")
|
||||||
|
customSlider.setMaximumTrackImage(rightTrackImage, for: .normal)
|
||||||
|
|
||||||
|
let thumbImage = UIImage(named: "slider_thumb")
|
||||||
|
customSlider.setThumbImage(thumbImage, for: .normal)
|
||||||
|
|
||||||
|
customSlider.minimumValue = 0
|
||||||
|
customSlider.maximumValue = 100
|
||||||
|
customSlider.isContinuous = false
|
||||||
|
customSlider.value = 84
|
||||||
|
|
||||||
|
customSlider.addTarget(self, action: #selector(SliderViewController.sliderValueDidChange(_:)), for: .valueChanged)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Add a Search Bar to Your Interface
|
||||||
|
|
||||||
|
Use a `UISearchBar` for receiving search-related information from the user. There are various ways to customize the look of the search bar:
|
||||||
|
|
||||||
|
* Add a cancel button.
|
||||||
|
* Add a bookmark button.
|
||||||
|
* Set the bookmark image, both normal and highlighted states.
|
||||||
|
* Change the tint color that applies to key elements in the search bar.
|
||||||
|
* Set the search bar's background image.
|
||||||
|
|
||||||
|
The `configureSearchBar` function sets up a custom search bar:
|
||||||
|
|
||||||
|
``` swift
|
||||||
|
func configureSearchBar() {
|
||||||
|
searchBar.showsCancelButton = true
|
||||||
|
searchBar.showsBookmarkButton = true
|
||||||
|
|
||||||
|
searchBar.tintColor = UIColor(named: "Tint_Purple_Color")
|
||||||
|
|
||||||
|
searchBar.backgroundImage = UIImage(named: "search_bar_background")
|
||||||
|
|
||||||
|
// Set the bookmark image for both normal and highlighted states.
|
||||||
|
let bookmarkImage = #imageLiteral(resourceName: "bookmark_icon")
|
||||||
|
searchBar.setImage(bookmarkImage, for: .bookmark, state: .normal)
|
||||||
|
|
||||||
|
let bookmarkHighlightedImage = #imageLiteral(resourceName: "bookmark_icon_highlighted")
|
||||||
|
searchBar.setImage(bookmarkHighlightedImage, for: .bookmark, state: .highlighted)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Customize the Appearance of Toolbars
|
||||||
|
|
||||||
|
This sample shows how to customize a `UIToolbar`, a specialized view that displays one or more buttons along the bottom edge of your interface. Customize a toolbar by determining its bar style (black or default), translucency, tint color, and background color.
|
||||||
|
|
||||||
|
The following `viewDidLoad` function in `CustomToolbarViewController` sets up a tinted tool bar:
|
||||||
|
|
||||||
|
``` swift
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
// See the `UIBarStyle` enum for more styles, including `.Default`.
|
||||||
|
toolbar.barStyle = .black
|
||||||
|
toolbar.isTranslucent = true
|
||||||
|
|
||||||
|
toolbar.tintColor = UIColor(named: "Tint_Green_Color")
|
||||||
|
toolbar.backgroundColor = UIColor(named: "Tint_Blue_Color")
|
||||||
|
|
||||||
|
let toolbarButtonItems = [
|
||||||
|
refreshBarButtonItem,
|
||||||
|
flexibleSpaceBarButtonItem,
|
||||||
|
actionBarButtonItem
|
||||||
|
]
|
||||||
|
toolbar.setItems(toolbarButtonItems, animated: true)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
`CustomToolbarViewController` demonstrates further customization by changing the toolbar's background image:
|
||||||
|
|
||||||
|
``` swift
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
let toolbarBackgroundImage = UIImage(named: "toolbar_background")
|
||||||
|
toolbar.setBackgroundImage(toolbarBackgroundImage, forToolbarPosition: .bottom, barMetrics: .default)
|
||||||
|
|
||||||
|
let toolbarButtonItems = [
|
||||||
|
customImageBarButtonItem,
|
||||||
|
flexibleSpaceBarButtonItem,
|
||||||
|
customBarButtonItem
|
||||||
|
]
|
||||||
|
toolbar.setItems(toolbarButtonItems, animated: true)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Add a Page Control Interface
|
||||||
|
|
||||||
|
Use a `UIPageControl` to structure your app's user interface. A page control is a specialized control that displays a horizontal series of dots, each of which corresponds to a page in the app’s document or other data-model entity. You customize a page control by setting its tint color for all the page indicator dots, and for the current page indicator dot.
|
||||||
|
|
||||||
|
The `configurePageControl` function sets up a customized page control:
|
||||||
|
|
||||||
|
``` swift
|
||||||
|
func configurePageControl() {
|
||||||
|
// The total number of available pages is based on the number of available colors.
|
||||||
|
pageControl.numberOfPages = colors.count
|
||||||
|
pageControl.currentPage = 2
|
||||||
|
|
||||||
|
pageControl.pageIndicatorTintColor = UIColor(named: "Tint_Green_Color")
|
||||||
|
pageControl.currentPageIndicatorTintColor = UIColor(named: "Tint_Purple_Color")
|
||||||
|
|
||||||
|
pageControl.addTarget(self, action: #selector(PageControlViewController.pageControlValueDidChange), for: .valueChanged)
|
||||||
|
}
|
||||||
|
```
|
||||||
5
UIKitCatalog.xcodeproj/.xcodesamplecode.plist
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<array/>
|
||||||
|
</plist>
|
||||||
756
UIKitCatalog.xcodeproj/project.pbxproj
Normal file
|
|
@ -0,0 +1,756 @@
|
||||||
|
// !$*UTF8*$!
|
||||||
|
{
|
||||||
|
archiveVersion = 1;
|
||||||
|
classes = {
|
||||||
|
};
|
||||||
|
objectVersion = 46;
|
||||||
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
2200541E18BC54E8002A6E8B /* ActivityIndicatorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200541A18BC54E8002A6E8B /* ActivityIndicatorViewController.swift */; };
|
||||||
|
2200541F18BC54E8002A6E8B /* AlertControllerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200541B18BC54E8002A6E8B /* AlertControllerViewController.swift */; };
|
||||||
|
2200542018BC54E8002A6E8B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200541C18BC54E8002A6E8B /* AppDelegate.swift */; };
|
||||||
|
2200542718BC54EC002A6E8B /* ButtonViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200542118BC54EC002A6E8B /* ButtonViewController.swift */; };
|
||||||
|
2200542818BC54EC002A6E8B /* CustomSearchBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200542218BC54EC002A6E8B /* CustomSearchBarViewController.swift */; };
|
||||||
|
2200542918BC54EC002A6E8B /* CustomToolbarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200542318BC54EC002A6E8B /* CustomToolbarViewController.swift */; };
|
||||||
|
2200542A18BC54EC002A6E8B /* DatePickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200542418BC54EC002A6E8B /* DatePickerController.swift */; };
|
||||||
|
2200542B18BC54EC002A6E8B /* DefaultSearchBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200542518BC54EC002A6E8B /* DefaultSearchBarViewController.swift */; };
|
||||||
|
2200542C18BC54EC002A6E8B /* DefaultToolbarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200542618BC54EC002A6E8B /* DefaultToolbarViewController.swift */; };
|
||||||
|
2200543C18BC54F5002A6E8B /* ImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200542D18BC54F5002A6E8B /* ImageViewController.swift */; };
|
||||||
|
2200543F18BC54F5002A6E8B /* PageControlViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543018BC54F5002A6E8B /* PageControlViewController.swift */; };
|
||||||
|
2200544018BC54F5002A6E8B /* PickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543118BC54F5002A6E8B /* PickerViewController.swift */; };
|
||||||
|
2200544118BC54F5002A6E8B /* ProgressViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543218BC54F5002A6E8B /* ProgressViewController.swift */; };
|
||||||
|
2200544218BC54F5002A6E8B /* SegmentedControlViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543318BC54F5002A6E8B /* SegmentedControlViewController.swift */; };
|
||||||
|
2200544318BC54F5002A6E8B /* SliderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543418BC54F5002A6E8B /* SliderViewController.swift */; };
|
||||||
|
2200544518BC54F5002A6E8B /* StepperViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543618BC54F5002A6E8B /* StepperViewController.swift */; };
|
||||||
|
2200544618BC54F5002A6E8B /* SwitchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543718BC54F5002A6E8B /* SwitchViewController.swift */; };
|
||||||
|
2200544718BC54F5002A6E8B /* TextFieldViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543818BC54F5002A6E8B /* TextFieldViewController.swift */; };
|
||||||
|
2200544818BC54F5002A6E8B /* TextViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543918BC54F5002A6E8B /* TextViewController.swift */; };
|
||||||
|
2200544918BC54F5002A6E8B /* TintedToolbarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543A18BC54F5002A6E8B /* TintedToolbarViewController.swift */; };
|
||||||
|
2200544A18BC54F5002A6E8B /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2200543B18BC54F5002A6E8B /* WebViewController.swift */; };
|
||||||
|
228DBA0818BC53F1002BA12A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 228DBA0718BC53F1002BA12A /* Assets.xcassets */; };
|
||||||
|
3E5C084E1974991E00969DD7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E5C08501974991E00969DD7 /* Main.storyboard */; };
|
||||||
|
533BD78D1F8BE1A6007D5C3B /* DetailViewManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 533BD78C1F8BE1A6007D5C3B /* DetailViewManager.swift */; };
|
||||||
|
533BD7951F8BF6A4007D5C3B /* UIViewController+SizeChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 533BD7941F8BF6A4007D5C3B /* UIViewController+SizeChange.swift */; };
|
||||||
|
533BD7971F8BF8B0007D5C3B /* BaseTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 533BD7961F8BF8B0007D5C3B /* BaseTableViewController.swift */; };
|
||||||
|
533BD7BC1F8D2B08007D5C3B /* SearchBarsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 533BD7BA1F8D2B07007D5C3B /* SearchBarsTableViewController.swift */; };
|
||||||
|
533BD7BD1F8D2B08007D5C3B /* ToolbarsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 533BD7BB1F8D2B07007D5C3B /* ToolbarsTableViewController.swift */; };
|
||||||
|
5341627C1F291F310007BCCA /* ToolbarViewControllers.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5341627A1F291F310007BCCA /* ToolbarViewControllers.storyboard */; };
|
||||||
|
537357141F291E6700FAB742 /* SearchViewControllers.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 537357121F291E6700FAB742 /* SearchViewControllers.storyboard */; };
|
||||||
|
538B36F41F2A8E06002AE100 /* DatePickerController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 538B36F21F2A8D97002AE100 /* DatePickerController.storyboard */; };
|
||||||
|
538B36F71F2A8E8A002AE100 /* TextViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 538B36F51F2A8E66002AE100 /* TextViewController.storyboard */; };
|
||||||
|
539029FF1F2A53AD009775E3 /* AlertControllerViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 539029FD1F2A53AD009775E3 /* AlertControllerViewController.storyboard */; };
|
||||||
|
539C6BAE1F27F4980006C5A9 /* ActivityIndicatorViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 539C6BA81F27F4980006C5A9 /* ActivityIndicatorViewController.storyboard */; };
|
||||||
|
539C6BAF1F27F4980006C5A9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 539C6BAA1F27F4980006C5A9 /* LaunchScreen.storyboard */; };
|
||||||
|
539C6BB01F27F4980006C5A9 /* WebViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 539C6BAC1F27F4980006C5A9 /* WebViewController.storyboard */; };
|
||||||
|
539C6BB21F27F4A70006C5A9 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 539C6BB11F27F4A70006C5A9 /* MasterViewController.swift */; };
|
||||||
|
53B791DA1F85505400AB2FA6 /* content.html in Resources */ = {isa = PBXBuildFile; fileRef = 53B791D41F854B4700AB2FA6 /* content.html */; };
|
||||||
|
53B791DB1F85505700AB2FA6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 53B791D61F854B4700AB2FA6 /* InfoPlist.strings */; };
|
||||||
|
53B791DC1F85505A00AB2FA6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 53B791D81F854B4800AB2FA6 /* Localizable.strings */; };
|
||||||
|
53CE5AD81F2A89E500D8A656 /* ButtonViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AD61F2A89E500D8A656 /* ButtonViewController.storyboard */; };
|
||||||
|
53CE5ADE1F2A8A3D00D8A656 /* ImageViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5ADC1F2A8A3D00D8A656 /* ImageViewController.storyboard */; };
|
||||||
|
53CE5AE31F2A8AD200D8A656 /* PageControlViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AE11F2A8AD200D8A656 /* PageControlViewController.storyboard */; };
|
||||||
|
53CE5AE61F2A8AEF00D8A656 /* PickerViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AE41F2A8AEF00D8A656 /* PickerViewController.storyboard */; };
|
||||||
|
53CE5AE91F2A8B1000D8A656 /* ProgressViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AE71F2A8B1000D8A656 /* ProgressViewController.storyboard */; };
|
||||||
|
53CE5AEC1F2A8B2F00D8A656 /* SegmentedControlViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AEA1F2A8B2F00D8A656 /* SegmentedControlViewController.storyboard */; };
|
||||||
|
53CE5AEF1F2A8B4F00D8A656 /* SliderViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AED1F2A8B4F00D8A656 /* SliderViewController.storyboard */; };
|
||||||
|
53CE5AF21F2A8B8300D8A656 /* StackViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AF01F2A8B8300D8A656 /* StackViewController.storyboard */; };
|
||||||
|
53CE5AF51F2A8BB000D8A656 /* StepperViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AF31F2A8BB000D8A656 /* StepperViewController.storyboard */; };
|
||||||
|
53CE5AF81F2A8BD000D8A656 /* SwitchViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AF61F2A8BD000D8A656 /* SwitchViewController.storyboard */; };
|
||||||
|
53CE5AFB1F2A8BEB00D8A656 /* TextFieldViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53CE5AF91F2A8BEB00D8A656 /* TextFieldViewController.storyboard */; };
|
||||||
|
B50F41081B1D284700E5147D /* StackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50F41071B1D284700E5147D /* StackViewController.swift */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXFileReference section */
|
||||||
|
2200541A18BC54E8002A6E8B /* ActivityIndicatorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityIndicatorViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200541B18BC54E8002A6E8B /* AlertControllerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = AlertControllerViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200541C18BC54E8002A6E8B /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
|
2200542118BC54EC002A6E8B /* ButtonViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ButtonViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200542218BC54EC002A6E8B /* CustomSearchBarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CustomSearchBarViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200542318BC54EC002A6E8B /* CustomToolbarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CustomToolbarViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200542418BC54EC002A6E8B /* DatePickerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DatePickerController.swift; sourceTree = "<group>"; };
|
||||||
|
2200542518BC54EC002A6E8B /* DefaultSearchBarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultSearchBarViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200542618BC54EC002A6E8B /* DefaultToolbarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DefaultToolbarViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200542D18BC54F5002A6E8B /* ImageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ImageViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543018BC54F5002A6E8B /* PageControlViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PageControlViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543118BC54F5002A6E8B /* PickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PickerViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543218BC54F5002A6E8B /* ProgressViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ProgressViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543318BC54F5002A6E8B /* SegmentedControlViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SegmentedControlViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543418BC54F5002A6E8B /* SliderViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SliderViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543618BC54F5002A6E8B /* StepperViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = StepperViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543718BC54F5002A6E8B /* SwitchViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SwitchViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543818BC54F5002A6E8B /* TextFieldViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextFieldViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543918BC54F5002A6E8B /* TextViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = TextViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543A18BC54F5002A6E8B /* TintedToolbarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TintedToolbarViewController.swift; sourceTree = "<group>"; };
|
||||||
|
2200543B18BC54F5002A6E8B /* WebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = "<group>"; };
|
||||||
|
228DB9F318BC53F1002BA12A /* UIKitCatalog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UIKitCatalog.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
228DB9F718BC53F1002BA12A /* UIKitCatalog-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "UIKitCatalog-Info.plist"; sourceTree = "<group>"; };
|
||||||
|
228DBA0718BC53F1002BA12A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
|
3E5C084F1974991E00969DD7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
|
533BD78C1F8BE1A6007D5C3B /* DetailViewManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailViewManager.swift; sourceTree = "<group>"; };
|
||||||
|
533BD7941F8BF6A4007D5C3B /* UIViewController+SizeChange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIViewController+SizeChange.swift"; sourceTree = "<group>"; };
|
||||||
|
533BD7961F8BF8B0007D5C3B /* BaseTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseTableViewController.swift; sourceTree = "<group>"; };
|
||||||
|
533BD7BA1F8D2B07007D5C3B /* SearchBarsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBarsTableViewController.swift; sourceTree = "<group>"; };
|
||||||
|
533BD7BB1F8D2B07007D5C3B /* ToolbarsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolbarsTableViewController.swift; sourceTree = "<group>"; };
|
||||||
|
5341627B1F291F310007BCCA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/ToolbarViewControllers.storyboard; sourceTree = "<group>"; };
|
||||||
|
5359C3081F194CF0007F0EC7 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||||
|
537357131F291E6700FAB742 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/SearchViewControllers.storyboard; sourceTree = "<group>"; };
|
||||||
|
538B36F31F2A8D97002AE100 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/DatePickerController.storyboard; sourceTree = "<group>"; };
|
||||||
|
538B36F61F2A8E66002AE100 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/TextViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
539029FE1F2A53AD009775E3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/AlertControllerViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
539C6BA91F27F4980006C5A9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/ActivityIndicatorViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
539C6BAB1F27F4980006C5A9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
|
539C6BAD1F27F4980006C5A9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/WebViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
539C6BB11F27F4A70006C5A9 /* MasterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = "<group>"; };
|
||||||
|
53B791D51F854B4700AB2FA6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = Base; path = Base.lproj/content.html; sourceTree = "<group>"; };
|
||||||
|
53B791D71F854B4700AB2FA6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
|
53B791D91F854B4800AB2FA6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||||
|
53CE5AD71F2A89E500D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/ButtonViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5ADD1F2A8A3D00D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/ImageViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AE21F2A8AD200D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/PageControlViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AE51F2A8AEF00D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/PickerViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AE81F2A8B1000D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/ProgressViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AEB1F2A8B2F00D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/SegmentedControlViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AEE1F2A8B4F00D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/SliderViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AF11F2A8B8300D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/StackViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AF41F2A8BB000D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/StepperViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AF71F2A8BD000D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/SwitchViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
53CE5AFA1F2A8BEB00D8A656 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/TextFieldViewController.storyboard; sourceTree = "<group>"; };
|
||||||
|
B50F41071B1D284700E5147D /* StackViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackViewController.swift; sourceTree = "<group>"; };
|
||||||
|
E05970B0E05971D000000001 /* SampleCode.xcconfig */ = {isa = PBXFileReference; name = SampleCode.xcconfig; path = Configuration/SampleCode.xcconfig; sourceTree = "<group>"; };
|
||||||
|
E2DECA10E2DE8B8000000001 /* LICENSE.txt */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.txt; sourceTree = "<group>"; };
|
||||||
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
228DB9F018BC53F1002BA12A /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXGroup section */
|
||||||
|
228DB9EA18BC53F1002BA12A = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
5359C3081F194CF0007F0EC7 /* README.md */,
|
||||||
|
228DB9F518BC53F1002BA12A /* UIKitCatalog */,
|
||||||
|
228DB9F418BC53F1002BA12A /* Products */,
|
||||||
|
E05975F0E0597BF000000001 /* Configuration */,
|
||||||
|
E2DE9120E2DEC9A000000001 /* LICENSE */,
|
||||||
|
);
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
228DB9F418BC53F1002BA12A /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
228DB9F318BC53F1002BA12A /* UIKitCatalog.app */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
228DB9F518BC53F1002BA12A /* UIKitCatalog */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
3E2459D41931CCB5002D3369 /* Application */,
|
||||||
|
3E1DA7601931CC99000114A9 /* View Controllers */,
|
||||||
|
228DBA0718BC53F1002BA12A /* Assets.xcassets */,
|
||||||
|
228DB9F618BC53F1002BA12A /* Supporting Files */,
|
||||||
|
);
|
||||||
|
path = UIKitCatalog;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
228DB9F618BC53F1002BA12A /* Supporting Files */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
228DB9F718BC53F1002BA12A /* UIKitCatalog-Info.plist */,
|
||||||
|
3E5C08501974991E00969DD7 /* Main.storyboard */,
|
||||||
|
539C6BAA1F27F4980006C5A9 /* LaunchScreen.storyboard */,
|
||||||
|
53B791D41F854B4700AB2FA6 /* content.html */,
|
||||||
|
53B791D61F854B4700AB2FA6 /* InfoPlist.strings */,
|
||||||
|
53B791D81F854B4800AB2FA6 /* Localizable.strings */,
|
||||||
|
);
|
||||||
|
name = "Supporting Files";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
22B7BB9718BC601D006C4AD5 /* Search */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
533BD7BA1F8D2B07007D5C3B /* SearchBarsTableViewController.swift */,
|
||||||
|
3E6AE84D196B1FC10062A3E1 /* Search Bar */,
|
||||||
|
537357121F291E6700FAB742 /* SearchViewControllers.storyboard */,
|
||||||
|
);
|
||||||
|
name = Search;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
22B7BB9818BC6024006C4AD5 /* Toolbar */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
533BD7BB1F8D2B07007D5C3B /* ToolbarsTableViewController.swift */,
|
||||||
|
2200542618BC54EC002A6E8B /* DefaultToolbarViewController.swift */,
|
||||||
|
2200543A18BC54F5002A6E8B /* TintedToolbarViewController.swift */,
|
||||||
|
2200542318BC54EC002A6E8B /* CustomToolbarViewController.swift */,
|
||||||
|
5341627A1F291F310007BCCA /* ToolbarViewControllers.storyboard */,
|
||||||
|
);
|
||||||
|
name = Toolbar;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
3E1DA7601931CC99000114A9 /* View Controllers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
2200541A18BC54E8002A6E8B /* ActivityIndicatorViewController.swift */,
|
||||||
|
539C6BA81F27F4980006C5A9 /* ActivityIndicatorViewController.storyboard */,
|
||||||
|
2200541B18BC54E8002A6E8B /* AlertControllerViewController.swift */,
|
||||||
|
539029FD1F2A53AD009775E3 /* AlertControllerViewController.storyboard */,
|
||||||
|
2200542118BC54EC002A6E8B /* ButtonViewController.swift */,
|
||||||
|
53CE5AD61F2A89E500D8A656 /* ButtonViewController.storyboard */,
|
||||||
|
2200542418BC54EC002A6E8B /* DatePickerController.swift */,
|
||||||
|
538B36F21F2A8D97002AE100 /* DatePickerController.storyboard */,
|
||||||
|
2200542D18BC54F5002A6E8B /* ImageViewController.swift */,
|
||||||
|
53CE5ADC1F2A8A3D00D8A656 /* ImageViewController.storyboard */,
|
||||||
|
2200543018BC54F5002A6E8B /* PageControlViewController.swift */,
|
||||||
|
53CE5AE11F2A8AD200D8A656 /* PageControlViewController.storyboard */,
|
||||||
|
2200543118BC54F5002A6E8B /* PickerViewController.swift */,
|
||||||
|
53CE5AE41F2A8AEF00D8A656 /* PickerViewController.storyboard */,
|
||||||
|
2200543218BC54F5002A6E8B /* ProgressViewController.swift */,
|
||||||
|
53CE5AE71F2A8B1000D8A656 /* ProgressViewController.storyboard */,
|
||||||
|
2200543318BC54F5002A6E8B /* SegmentedControlViewController.swift */,
|
||||||
|
53CE5AEA1F2A8B2F00D8A656 /* SegmentedControlViewController.storyboard */,
|
||||||
|
2200543418BC54F5002A6E8B /* SliderViewController.swift */,
|
||||||
|
53CE5AED1F2A8B4F00D8A656 /* SliderViewController.storyboard */,
|
||||||
|
B50F41071B1D284700E5147D /* StackViewController.swift */,
|
||||||
|
53CE5AF01F2A8B8300D8A656 /* StackViewController.storyboard */,
|
||||||
|
2200543618BC54F5002A6E8B /* StepperViewController.swift */,
|
||||||
|
53CE5AF31F2A8BB000D8A656 /* StepperViewController.storyboard */,
|
||||||
|
2200543718BC54F5002A6E8B /* SwitchViewController.swift */,
|
||||||
|
53CE5AF61F2A8BD000D8A656 /* SwitchViewController.storyboard */,
|
||||||
|
2200543818BC54F5002A6E8B /* TextFieldViewController.swift */,
|
||||||
|
53CE5AF91F2A8BEB00D8A656 /* TextFieldViewController.storyboard */,
|
||||||
|
2200543918BC54F5002A6E8B /* TextViewController.swift */,
|
||||||
|
538B36F51F2A8E66002AE100 /* TextViewController.storyboard */,
|
||||||
|
2200543B18BC54F5002A6E8B /* WebViewController.swift */,
|
||||||
|
539C6BAC1F27F4980006C5A9 /* WebViewController.storyboard */,
|
||||||
|
22B7BB9718BC601D006C4AD5 /* Search */,
|
||||||
|
22B7BB9818BC6024006C4AD5 /* Toolbar */,
|
||||||
|
);
|
||||||
|
name = "View Controllers";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
3E2459D41931CCB5002D3369 /* Application */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
2200541C18BC54E8002A6E8B /* AppDelegate.swift */,
|
||||||
|
533BD78C1F8BE1A6007D5C3B /* DetailViewManager.swift */,
|
||||||
|
539C6BB11F27F4A70006C5A9 /* MasterViewController.swift */,
|
||||||
|
533BD7941F8BF6A4007D5C3B /* UIViewController+SizeChange.swift */,
|
||||||
|
533BD7961F8BF8B0007D5C3B /* BaseTableViewController.swift */,
|
||||||
|
);
|
||||||
|
name = Application;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
3E6AE84D196B1FC10062A3E1 /* Search Bar */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
2200542518BC54EC002A6E8B /* DefaultSearchBarViewController.swift */,
|
||||||
|
2200542218BC54EC002A6E8B /* CustomSearchBarViewController.swift */,
|
||||||
|
);
|
||||||
|
name = "Search Bar";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
E05975F0E0597BF000000001 /* Configuration */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
E05970B0E05971D000000001 /* SampleCode.xcconfig */,
|
||||||
|
);
|
||||||
|
name = Configuration;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
E2DE9120E2DEC9A000000001 /* LICENSE */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
E2DECA10E2DE8B8000000001 /* LICENSE.txt */,
|
||||||
|
);
|
||||||
|
name = LICENSE;
|
||||||
|
path = LICENSE;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXGroup section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
228DB9F218BC53F1002BA12A /* UIKitCatalog */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 228DBA0B18BC53F1002BA12A /* Build configuration list for PBXNativeTarget "UIKitCatalog" */;
|
||||||
|
buildPhases = (
|
||||||
|
228DB9EF18BC53F1002BA12A /* Sources */,
|
||||||
|
228DB9F018BC53F1002BA12A /* Frameworks */,
|
||||||
|
228DB9F118BC53F1002BA12A /* Resources */,
|
||||||
|
5399BE86211B482A005809B6,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = UIKitCatalog;
|
||||||
|
productName = UIKitCatalog;
|
||||||
|
productReference = 228DB9F318BC53F1002BA12A /* UIKitCatalog.app */;
|
||||||
|
productType = "com.apple.product-type.application";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXProject section */
|
||||||
|
228DB9EB18BC53F1002BA12A /* Project object */ = {
|
||||||
|
isa = PBXProject;
|
||||||
|
attributes = {
|
||||||
|
LastSwiftUpdateCheck = 0700;
|
||||||
|
LastUpgradeCheck = 0940;
|
||||||
|
ORGANIZATIONNAME = Apple;
|
||||||
|
TargetAttributes = {
|
||||||
|
228DB9F218BC53F1002BA12A = {
|
||||||
|
LastSwiftMigration = 0900;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
buildConfigurationList = 228DB9EE18BC53F1002BA12A /* Build configuration list for PBXProject "UIKitCatalog" */;
|
||||||
|
compatibilityVersion = "Xcode 3.2";
|
||||||
|
developmentRegion = English;
|
||||||
|
hasScannedForEncodings = 0;
|
||||||
|
knownRegions = (
|
||||||
|
en,
|
||||||
|
Base,
|
||||||
|
);
|
||||||
|
mainGroup = 228DB9EA18BC53F1002BA12A;
|
||||||
|
productRefGroup = 228DB9F418BC53F1002BA12A /* Products */;
|
||||||
|
projectDirPath = "";
|
||||||
|
projectRoot = "";
|
||||||
|
targets = (
|
||||||
|
228DB9F218BC53F1002BA12A /* UIKitCatalog */,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
228DB9F118BC53F1002BA12A /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
539C6BB01F27F4980006C5A9 /* WebViewController.storyboard in Resources */,
|
||||||
|
53CE5AD81F2A89E500D8A656 /* ButtonViewController.storyboard in Resources */,
|
||||||
|
53CE5AEF1F2A8B4F00D8A656 /* SliderViewController.storyboard in Resources */,
|
||||||
|
537357141F291E6700FAB742 /* SearchViewControllers.storyboard in Resources */,
|
||||||
|
53CE5AE91F2A8B1000D8A656 /* ProgressViewController.storyboard in Resources */,
|
||||||
|
53CE5AE61F2A8AEF00D8A656 /* PickerViewController.storyboard in Resources */,
|
||||||
|
53B791DA1F85505400AB2FA6 /* content.html in Resources */,
|
||||||
|
3E5C084E1974991E00969DD7 /* Main.storyboard in Resources */,
|
||||||
|
53CE5AEC1F2A8B2F00D8A656 /* SegmentedControlViewController.storyboard in Resources */,
|
||||||
|
53B791DB1F85505700AB2FA6 /* InfoPlist.strings in Resources */,
|
||||||
|
539C6BAE1F27F4980006C5A9 /* ActivityIndicatorViewController.storyboard in Resources */,
|
||||||
|
53CE5AFB1F2A8BEB00D8A656 /* TextFieldViewController.storyboard in Resources */,
|
||||||
|
5341627C1F291F310007BCCA /* ToolbarViewControllers.storyboard in Resources */,
|
||||||
|
53B791DC1F85505A00AB2FA6 /* Localizable.strings in Resources */,
|
||||||
|
228DBA0818BC53F1002BA12A /* Assets.xcassets in Resources */,
|
||||||
|
538B36F41F2A8E06002AE100 /* DatePickerController.storyboard in Resources */,
|
||||||
|
53CE5AE31F2A8AD200D8A656 /* PageControlViewController.storyboard in Resources */,
|
||||||
|
53CE5AF21F2A8B8300D8A656 /* StackViewController.storyboard in Resources */,
|
||||||
|
538B36F71F2A8E8A002AE100 /* TextViewController.storyboard in Resources */,
|
||||||
|
539C6BAF1F27F4980006C5A9 /* LaunchScreen.storyboard in Resources */,
|
||||||
|
539029FF1F2A53AD009775E3 /* AlertControllerViewController.storyboard in Resources */,
|
||||||
|
53CE5AF51F2A8BB000D8A656 /* StepperViewController.storyboard in Resources */,
|
||||||
|
53CE5AF81F2A8BD000D8A656 /* SwitchViewController.storyboard in Resources */,
|
||||||
|
53CE5ADE1F2A8A3D00D8A656 /* ImageViewController.storyboard in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
228DB9EF18BC53F1002BA12A /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
2200544018BC54F5002A6E8B /* PickerViewController.swift in Sources */,
|
||||||
|
2200543F18BC54F5002A6E8B /* PageControlViewController.swift in Sources */,
|
||||||
|
533BD7951F8BF6A4007D5C3B /* UIViewController+SizeChange.swift in Sources */,
|
||||||
|
2200544918BC54F5002A6E8B /* TintedToolbarViewController.swift in Sources */,
|
||||||
|
2200544318BC54F5002A6E8B /* SliderViewController.swift in Sources */,
|
||||||
|
2200544218BC54F5002A6E8B /* SegmentedControlViewController.swift in Sources */,
|
||||||
|
2200544A18BC54F5002A6E8B /* WebViewController.swift in Sources */,
|
||||||
|
2200542018BC54E8002A6E8B /* AppDelegate.swift in Sources */,
|
||||||
|
539C6BB21F27F4A70006C5A9 /* MasterViewController.swift in Sources */,
|
||||||
|
2200541F18BC54E8002A6E8B /* AlertControllerViewController.swift in Sources */,
|
||||||
|
2200542C18BC54EC002A6E8B /* DefaultToolbarViewController.swift in Sources */,
|
||||||
|
2200543C18BC54F5002A6E8B /* ImageViewController.swift in Sources */,
|
||||||
|
2200541E18BC54E8002A6E8B /* ActivityIndicatorViewController.swift in Sources */,
|
||||||
|
533BD7BD1F8D2B08007D5C3B /* ToolbarsTableViewController.swift in Sources */,
|
||||||
|
2200544618BC54F5002A6E8B /* SwitchViewController.swift in Sources */,
|
||||||
|
533BD7971F8BF8B0007D5C3B /* BaseTableViewController.swift in Sources */,
|
||||||
|
B50F41081B1D284700E5147D /* StackViewController.swift in Sources */,
|
||||||
|
2200544118BC54F5002A6E8B /* ProgressViewController.swift in Sources */,
|
||||||
|
2200544718BC54F5002A6E8B /* TextFieldViewController.swift in Sources */,
|
||||||
|
2200544818BC54F5002A6E8B /* TextViewController.swift in Sources */,
|
||||||
|
2200542B18BC54EC002A6E8B /* DefaultSearchBarViewController.swift in Sources */,
|
||||||
|
2200544518BC54F5002A6E8B /* StepperViewController.swift in Sources */,
|
||||||
|
2200542818BC54EC002A6E8B /* CustomSearchBarViewController.swift in Sources */,
|
||||||
|
533BD7BC1F8D2B08007D5C3B /* SearchBarsTableViewController.swift in Sources */,
|
||||||
|
2200542918BC54EC002A6E8B /* CustomToolbarViewController.swift in Sources */,
|
||||||
|
2200542A18BC54EC002A6E8B /* DatePickerController.swift in Sources */,
|
||||||
|
2200542718BC54EC002A6E8B /* ButtonViewController.swift in Sources */,
|
||||||
|
533BD78D1F8BE1A6007D5C3B /* DetailViewManager.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXVariantGroup section */
|
||||||
|
3E5C08501974991E00969DD7 /* Main.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
3E5C084F1974991E00969DD7 /* Base */,
|
||||||
|
);
|
||||||
|
name = Main.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
5341627A1F291F310007BCCA /* ToolbarViewControllers.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
5341627B1F291F310007BCCA /* Base */,
|
||||||
|
);
|
||||||
|
name = ToolbarViewControllers.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
537357121F291E6700FAB742 /* SearchViewControllers.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
537357131F291E6700FAB742 /* Base */,
|
||||||
|
);
|
||||||
|
name = SearchViewControllers.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
538B36F21F2A8D97002AE100 /* DatePickerController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
538B36F31F2A8D97002AE100 /* Base */,
|
||||||
|
);
|
||||||
|
name = DatePickerController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
538B36F51F2A8E66002AE100 /* TextViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
538B36F61F2A8E66002AE100 /* Base */,
|
||||||
|
);
|
||||||
|
name = TextViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
539029FD1F2A53AD009775E3 /* AlertControllerViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
539029FE1F2A53AD009775E3 /* Base */,
|
||||||
|
);
|
||||||
|
name = AlertControllerViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
539C6BA81F27F4980006C5A9 /* ActivityIndicatorViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
539C6BA91F27F4980006C5A9 /* Base */,
|
||||||
|
);
|
||||||
|
name = ActivityIndicatorViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
539C6BAA1F27F4980006C5A9 /* LaunchScreen.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
539C6BAB1F27F4980006C5A9 /* Base */,
|
||||||
|
);
|
||||||
|
name = LaunchScreen.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
539C6BAC1F27F4980006C5A9 /* WebViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
539C6BAD1F27F4980006C5A9 /* Base */,
|
||||||
|
);
|
||||||
|
name = WebViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53B791D41F854B4700AB2FA6 /* content.html */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53B791D51F854B4700AB2FA6 /* Base */,
|
||||||
|
);
|
||||||
|
name = content.html;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53B791D61F854B4700AB2FA6 /* InfoPlist.strings */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53B791D71F854B4700AB2FA6 /* Base */,
|
||||||
|
);
|
||||||
|
name = InfoPlist.strings;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53B791D81F854B4800AB2FA6 /* Localizable.strings */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53B791D91F854B4800AB2FA6 /* Base */,
|
||||||
|
);
|
||||||
|
name = Localizable.strings;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AD61F2A89E500D8A656 /* ButtonViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AD71F2A89E500D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = ButtonViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5ADC1F2A8A3D00D8A656 /* ImageViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5ADD1F2A8A3D00D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = ImageViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AE11F2A8AD200D8A656 /* PageControlViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AE21F2A8AD200D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = PageControlViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AE41F2A8AEF00D8A656 /* PickerViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AE51F2A8AEF00D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = PickerViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AE71F2A8B1000D8A656 /* ProgressViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AE81F2A8B1000D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = ProgressViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AEA1F2A8B2F00D8A656 /* SegmentedControlViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AEB1F2A8B2F00D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = SegmentedControlViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AED1F2A8B4F00D8A656 /* SliderViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AEE1F2A8B4F00D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = SliderViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AF01F2A8B8300D8A656 /* StackViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AF11F2A8B8300D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = StackViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AF31F2A8BB000D8A656 /* StepperViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AF41F2A8BB000D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = StepperViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AF61F2A8BD000D8A656 /* SwitchViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AF71F2A8BD000D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = SwitchViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
53CE5AF91F2A8BEB00D8A656 /* TextFieldViewController.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
53CE5AFA1F2A8BEB00D8A656 /* Base */,
|
||||||
|
);
|
||||||
|
name = TextFieldViewController.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
|
/* Begin XCBuildConfiguration section */
|
||||||
|
228DBA0918BC53F1002BA12A /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = E05970B0E05971D000000001 /* SampleCode.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
ENABLE_TESTABILITY = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.1;
|
||||||
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_VERSION = "";
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
228DBA0A18BC53F1002BA12A /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = E05970B0E05971D000000001 /* SampleCode.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
COPY_PHASE_STRIP = YES;
|
||||||
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.1;
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_VERSION = "";
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
228DBA0C18BC53F1002BA12A /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = E05970B0E05971D000000001 /* SampleCode.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
DEVELOPMENT_TEAM = "";
|
||||||
|
INFOPLIST_FILE = "$(SRCROOT)/UIKitCatalog/UIKitCatalog-Info.plist";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.4;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.${PRODUCT_NAME:rfc1034identifier}${SAMPLE_CODE_DISAMBIGUATOR}";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
|
SWIFT_SWIFT3_OBJC_INFERENCE = Off;
|
||||||
|
SWIFT_VERSION = 4.0;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
228DBA0D18BC53F1002BA12A /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = E05970B0E05971D000000001 /* SampleCode.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
|
DEVELOPMENT_TEAM = "";
|
||||||
|
INFOPLIST_FILE = "$(SRCROOT)/UIKitCatalog/UIKitCatalog-Info.plist";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 11.4;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.${PRODUCT_NAME:rfc1034identifier}${SAMPLE_CODE_DISAMBIGUATOR}";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||||
|
SWIFT_SWIFT3_OBJC_INFERENCE = Off;
|
||||||
|
SWIFT_VERSION = 4.0;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
/* Begin XCConfigurationList section */
|
||||||
|
228DB9EE18BC53F1002BA12A /* Build configuration list for PBXProject "UIKitCatalog" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
228DBA0918BC53F1002BA12A /* Debug */,
|
||||||
|
228DBA0A18BC53F1002BA12A /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
228DBA0B18BC53F1002BA12A /* Build configuration list for PBXNativeTarget "UIKitCatalog" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
228DBA0C18BC53F1002BA12A /* Debug */,
|
||||||
|
228DBA0D18BC53F1002BA12A /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
/* End XCConfigurationList section */
|
||||||
|
};
|
||||||
|
rootObject = 228DB9EB18BC53F1002BA12A /* Project object */;
|
||||||
|
}
|
||||||
45
UIKitCatalog/ActivityIndicatorViewController.swift
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
See LICENSE folder for this sample’s licensing information.
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
A view controller that demonstrates how to use `UIActivityIndicatorView`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class ActivityIndicatorViewController: UITableViewController {
|
||||||
|
// MARK: - Properties
|
||||||
|
|
||||||
|
@IBOutlet weak var grayStyleActivityIndicatorView: UIActivityIndicatorView!
|
||||||
|
|
||||||
|
@IBOutlet weak var tintedActivityIndicatorView: UIActivityIndicatorView!
|
||||||
|
|
||||||
|
// MARK: - View Life Cycle
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
configureGrayActivityIndicatorView()
|
||||||
|
configureTintedActivityIndicatorView()
|
||||||
|
|
||||||
|
// When the activity is done, be sure to use UIActivityIndicatorView.stopAnimating().
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Configuration
|
||||||
|
|
||||||
|
func configureGrayActivityIndicatorView() {
|
||||||
|
grayStyleActivityIndicatorView.activityIndicatorViewStyle = .gray
|
||||||
|
|
||||||
|
grayStyleActivityIndicatorView.startAnimating()
|
||||||
|
|
||||||
|
grayStyleActivityIndicatorView.hidesWhenStopped = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func configureTintedActivityIndicatorView() {
|
||||||
|
tintedActivityIndicatorView.activityIndicatorViewStyle = .gray
|
||||||
|
|
||||||
|
tintedActivityIndicatorView.color = UIColor(named: "Tint_Purple_Color")
|
||||||
|
|
||||||
|
tintedActivityIndicatorView.startAnimating()
|
||||||
|
}
|
||||||
|
}
|
||||||
310
UIKitCatalog/AlertControllerViewController.swift
Normal file
|
|
@ -0,0 +1,310 @@
|
||||||
|
/*
|
||||||
|
See LICENSE folder for this sample’s licensing information.
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
The view controller that demonstrates how to use `UIAlertController`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class AlertControllerViewController: UITableViewController {
|
||||||
|
// MARK: - Properties
|
||||||
|
|
||||||
|
weak var secureTextAlertAction: UIAlertAction?
|
||||||
|
|
||||||
|
private enum StyleSections: Int {
|
||||||
|
case alertStyleSection = 0
|
||||||
|
case actionStyleSection
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum AlertStyleTest: Int {
|
||||||
|
// Alert style alerts.
|
||||||
|
case showSimpleAlert = 0
|
||||||
|
case showOkayCancelAlert
|
||||||
|
case showOtherAlert
|
||||||
|
case showTextEntryAlert
|
||||||
|
case showSecureTextEntryAlert
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum ActionSheetStyleTest: Int {
|
||||||
|
// Action sheet style alerts.
|
||||||
|
case showOkayCancelActionSheet = 0
|
||||||
|
case howOtherActionSheet
|
||||||
|
}
|
||||||
|
|
||||||
|
private var textDidChangeObserver: NSObjectProtocol!
|
||||||
|
|
||||||
|
// MARK: - UIAlertControllerStyleAlert Style Alerts
|
||||||
|
|
||||||
|
/// Show an alert with an "OK" button.
|
||||||
|
func showSimpleAlert() {
|
||||||
|
let title = NSLocalizedString("A Short Title is Best", comment: "")
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let cancelButtonTitle = NSLocalizedString("OK", comment: "")
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
||||||
|
|
||||||
|
// Create the action.
|
||||||
|
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .cancel) { _ in
|
||||||
|
print("The simple alert's cancel action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the action.
|
||||||
|
alertController.addAction(cancelAction)
|
||||||
|
|
||||||
|
present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Show an alert with an "OK" and "Cancel" button.
|
||||||
|
func showOkayCancelAlert() {
|
||||||
|
let title = NSLocalizedString("A Short Title is Best", comment: "")
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let cancelButtonTitle = NSLocalizedString("Cancel", comment: "")
|
||||||
|
let otherButtonTitle = NSLocalizedString("OK", comment: "")
|
||||||
|
|
||||||
|
let alertCotroller = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
||||||
|
|
||||||
|
// Create the actions.
|
||||||
|
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .cancel) { _ in
|
||||||
|
print("The \"OK/Cancel\" alert's cancel action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
let otherAction = UIAlertAction(title: otherButtonTitle, style: .default) { _ in
|
||||||
|
print("The \"OK/Cancel\" alert's other action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the actions.
|
||||||
|
alertCotroller.addAction(cancelAction)
|
||||||
|
alertCotroller.addAction(otherAction)
|
||||||
|
|
||||||
|
present(alertCotroller, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Show an alert with two custom buttons.
|
||||||
|
func showOtherAlert() {
|
||||||
|
let title = NSLocalizedString("A Short Title is Best", comment: "")
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let cancelButtonTitle = NSLocalizedString("Cancel", comment: "")
|
||||||
|
let otherButtonTitleOne = NSLocalizedString("Choice One", comment: "")
|
||||||
|
let otherButtonTitleTwo = NSLocalizedString("Choice Two", comment: "")
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
||||||
|
|
||||||
|
// Create the actions.
|
||||||
|
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .cancel) { _ in
|
||||||
|
print("The \"Other\" alert's cancel action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
let otherButtonOneAction = UIAlertAction(title: otherButtonTitleOne, style: .default) { _ in
|
||||||
|
print("The \"Other\" alert's other button one action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
let otherButtonTwoAction = UIAlertAction(title: otherButtonTitleTwo, style: .default) { _ in
|
||||||
|
print("The \"Other\" alert's other button two action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the actions.
|
||||||
|
alertController.addAction(cancelAction)
|
||||||
|
alertController.addAction(otherButtonOneAction)
|
||||||
|
alertController.addAction(otherButtonTwoAction)
|
||||||
|
|
||||||
|
present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Show a text entry alert with two custom buttons.
|
||||||
|
func showTextEntryAlert() {
|
||||||
|
let title = NSLocalizedString("A Short Title is Best", comment: "")
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let cancelButtonTitle = NSLocalizedString("Cancel", comment: "")
|
||||||
|
let otherButtonTitle = NSLocalizedString("OK", comment: "")
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
||||||
|
|
||||||
|
// Add the text field for text entry.
|
||||||
|
alertController.addTextField { _ in
|
||||||
|
// If you need to customize the text field, you can do so here.
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the actions.
|
||||||
|
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .cancel) { _ in
|
||||||
|
print("The \"Text Entry\" alert's cancel action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
let otherAction = UIAlertAction(title: otherButtonTitle, style: .default) { _ in
|
||||||
|
print("The \"Text Entry\" alert's other action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the actions.
|
||||||
|
alertController.addAction(cancelAction)
|
||||||
|
alertController.addAction(otherAction)
|
||||||
|
|
||||||
|
present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Show a secure text entry alert with two custom buttons.
|
||||||
|
func showSecureTextEntryAlert() {
|
||||||
|
let title = NSLocalizedString("A Short Title is Best", comment: "")
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let cancelButtonTitle = NSLocalizedString("Cancel", comment: "")
|
||||||
|
let otherButtonTitle = NSLocalizedString("OK", comment: "")
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
|
||||||
|
|
||||||
|
// Add the text field for the secure text entry.
|
||||||
|
alertController.addTextField { textField in
|
||||||
|
/** Listen for changes to the text field's text so that we can toggle the current
|
||||||
|
action's enabled property based on whether the user has entered a sufficiently
|
||||||
|
secure entry.
|
||||||
|
*/
|
||||||
|
self.textDidChangeObserver = NotificationCenter.default.addObserver(
|
||||||
|
forName: NSNotification.Name.UITextFieldTextDidChange,
|
||||||
|
object: textField,
|
||||||
|
queue: OperationQueue.main) { (notification) in
|
||||||
|
if let textField = notification.object as? UITextField {
|
||||||
|
// Enforce a minimum length of >= 5 characters for secure text alerts.
|
||||||
|
if let text = textField.text {
|
||||||
|
self.secureTextAlertAction!.isEnabled = text.count >= 5
|
||||||
|
} else {
|
||||||
|
self.secureTextAlertAction!.isEnabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
textField.isSecureTextEntry = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the actions.
|
||||||
|
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .cancel) { _ in
|
||||||
|
print("The \"Secure Text Entry\" alert's cancel action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
let otherAction = UIAlertAction(title: otherButtonTitle, style: .default) { _ in
|
||||||
|
print("The \"Secure Text Entry\" alert's other action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The text field initially has no text in the text field, so we'll disable it for now.
|
||||||
|
It will be re-enabled when the first character is typed.
|
||||||
|
*/
|
||||||
|
otherAction.isEnabled = false
|
||||||
|
|
||||||
|
/** Hold onto the secure text alert action to toggle the enabled / disabled
|
||||||
|
state when the text changed.
|
||||||
|
*/
|
||||||
|
secureTextAlertAction = otherAction
|
||||||
|
|
||||||
|
// Add the actions.
|
||||||
|
alertController.addAction(cancelAction)
|
||||||
|
alertController.addAction(otherAction)
|
||||||
|
|
||||||
|
present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - UIAlertControllerStyleActionSheet Style Alerts
|
||||||
|
|
||||||
|
// Show a dialog with an "OK" and "Cancel" button.
|
||||||
|
func showOkayCancelActionSheet(_ selectedIndexPath: IndexPath) {
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let cancelButtonTitle = NSLocalizedString("Cancel", comment: "")
|
||||||
|
let destructiveButtonTitle = NSLocalizedString("Confirm", comment: "")
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)
|
||||||
|
|
||||||
|
// Create the actions.
|
||||||
|
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .cancel) { _ in
|
||||||
|
print("The \"OK/Cancel\" alert action sheet's cancel action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
let destructiveAction = UIAlertAction(title: destructiveButtonTitle, style: .default) { _ in
|
||||||
|
print("The \"Confirm\" alert action sheet's destructive action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the actions.
|
||||||
|
alertController.addAction(cancelAction)
|
||||||
|
alertController.addAction(destructiveAction)
|
||||||
|
|
||||||
|
// Configure the alert controller's popover presentation controller if it has one.
|
||||||
|
if let popoverPresentationController = alertController.popoverPresentationController {
|
||||||
|
// Note for popovers the Cancel button is hidden automatically.
|
||||||
|
|
||||||
|
// This method expects a valid cell to display from.
|
||||||
|
let selectedCell = tableView.cellForRow(at: selectedIndexPath)!
|
||||||
|
popoverPresentationController.sourceRect = selectedCell.frame
|
||||||
|
popoverPresentationController.sourceView = view
|
||||||
|
popoverPresentationController.permittedArrowDirections = .up
|
||||||
|
}
|
||||||
|
|
||||||
|
present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show a dialog with two custom buttons.
|
||||||
|
func showOtherActionSheet(_ selectedIndexPath: IndexPath) {
|
||||||
|
let message = NSLocalizedString("A message should be a short, complete sentence.", comment: "")
|
||||||
|
let destructiveButtonTitle = NSLocalizedString("Destructive Choice", comment: "")
|
||||||
|
let otherButtonTitle = NSLocalizedString("Safe Choice", comment: "")
|
||||||
|
|
||||||
|
let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)
|
||||||
|
|
||||||
|
// Create the actions.
|
||||||
|
let destructiveAction = UIAlertAction(title: destructiveButtonTitle, style: .destructive) { _ in
|
||||||
|
print("The \"Other\" alert action sheet's destructive action occurred.")
|
||||||
|
}
|
||||||
|
let otherAction = UIAlertAction(title: otherButtonTitle, style: .default) { _ in
|
||||||
|
print("The \"Other\" alert action sheet's other action occurred.")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the actions.
|
||||||
|
alertController.addAction(destructiveAction)
|
||||||
|
alertController.addAction(otherAction)
|
||||||
|
|
||||||
|
// Configure the alert controller's popover presentation controller if it has one.
|
||||||
|
if let popoverPresentationController = alertController.popoverPresentationController {
|
||||||
|
// Note for popovers the Cancel button is hidden automatically.
|
||||||
|
|
||||||
|
// This method expects a valid cell to display from.
|
||||||
|
let selectedCell = tableView.cellForRow(at: selectedIndexPath)!
|
||||||
|
popoverPresentationController.sourceRect = selectedCell.frame
|
||||||
|
popoverPresentationController.sourceView = view
|
||||||
|
popoverPresentationController.permittedArrowDirections = .up
|
||||||
|
}
|
||||||
|
|
||||||
|
present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - UITableViewDelegate
|
||||||
|
|
||||||
|
extension AlertControllerViewController {
|
||||||
|
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
|
switch indexPath.section {
|
||||||
|
case StyleSections.alertStyleSection.rawValue:
|
||||||
|
// Alert style.
|
||||||
|
switch indexPath.row {
|
||||||
|
case AlertStyleTest.showSimpleAlert.rawValue:
|
||||||
|
showSimpleAlert()
|
||||||
|
case AlertStyleTest.showOkayCancelAlert.rawValue:
|
||||||
|
showOkayCancelAlert()
|
||||||
|
case AlertStyleTest.showOtherAlert.rawValue:
|
||||||
|
showOtherAlert()
|
||||||
|
case AlertStyleTest.showTextEntryAlert.rawValue:
|
||||||
|
showTextEntryAlert()
|
||||||
|
case AlertStyleTest.showSecureTextEntryAlert.rawValue:
|
||||||
|
showSecureTextEntryAlert()
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
case StyleSections.actionStyleSection.rawValue:
|
||||||
|
switch indexPath.row {
|
||||||
|
// Action sheet style.
|
||||||
|
case ActionSheetStyleTest.showOkayCancelActionSheet.rawValue:
|
||||||
|
showOkayCancelActionSheet(indexPath)
|
||||||
|
case ActionSheetStyleTest.howOtherActionSheet.rawValue:
|
||||||
|
showOtherActionSheet(indexPath)
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
|
||||||
|
tableView.deselectRow(at: indexPath, animated: true)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
32
UIKitCatalog/AppDelegate.swift
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
See LICENSE folder for this sample’s licensing information.
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
The application-specific delegate class.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
@UIApplicationMain
|
||||||
|
class AppDelegate: NSObject, UIApplicationDelegate, UISplitViewControllerDelegate {
|
||||||
|
// MARK: - Properties
|
||||||
|
|
||||||
|
var window: UIWindow?
|
||||||
|
|
||||||
|
/** The detailViewManager is responsible for maintaining the UISplitViewController delegation
|
||||||
|
and for managing the detail view controller of the split view.
|
||||||
|
*/
|
||||||
|
var detailViewManager = DetailViewManager()
|
||||||
|
|
||||||
|
// MARK: - UIApplicationDelegate
|
||||||
|
|
||||||
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
|
||||||
|
if let splitViewController = window!.rootViewController as? UISplitViewController {
|
||||||
|
splitViewController.preferredDisplayMode = .allVisible
|
||||||
|
splitViewController.delegate = detailViewManager
|
||||||
|
detailViewManager.splitViewController = splitViewController
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,98 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "20x20",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "20x20",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "29x29",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "29x29",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "40x40",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "40x40",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "60x60",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "iphone",
|
||||||
|
"size" : "60x60",
|
||||||
|
"scale" : "3x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "20x20",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "20x20",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "29x29",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "29x29",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "40x40",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "40x40",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "76x76",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "76x76",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ipad",
|
||||||
|
"size" : "83.5x83.5",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "ios-marketing",
|
||||||
|
"size" : "1024x1024",
|
||||||
|
"scale" : "1x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
6
UIKitCatalog/Assets.xcassets/Contents.json
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
21
UIKitCatalog/Assets.xcassets/Flowers_1.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "Flowers_1.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/Flowers_1.imageset/Flowers_1.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 MiB |
21
UIKitCatalog/Assets.xcassets/Flowers_2.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "Flowers_2.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/Flowers_2.imageset/Flowers_2.png
vendored
Normal file
|
After Width: | Height: | Size: 8.9 MiB |
21
UIKitCatalog/Assets.xcassets/Flowers_3.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "Flowers_3.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/Flowers_3.imageset/Flowers_3.png
vendored
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
21
UIKitCatalog/Assets.xcassets/Flowers_4.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "Flowers_4.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/Flowers_4.imageset/Flowers_4.png
vendored
Normal file
|
After Width: | Height: | Size: 11 MiB |
21
UIKitCatalog/Assets.xcassets/Flowers_5.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "Flowers_5.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/Flowers_5.imageset/Flowers_5.png
vendored
Normal file
|
After Width: | Height: | Size: 11 MiB |
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
},
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"red" : "0.333",
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "1.000",
|
||||||
|
"green" : "0.784"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
},
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"red" : "0.255",
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "0.470",
|
||||||
|
"green" : "0.804"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
},
|
||||||
|
"colors" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"color" : {
|
||||||
|
"color-space" : "srgb",
|
||||||
|
"components" : {
|
||||||
|
"red" : "0.659",
|
||||||
|
"alpha" : "1.000",
|
||||||
|
"blue" : "0.988",
|
||||||
|
"green" : "0.271"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
23
UIKitCatalog/Assets.xcassets/bookmark_icon.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "bookmark_icon_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "bookmark_icon_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "bookmark_icon_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/bookmark_icon.imageset/bookmark_icon_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 343 B |
BIN
UIKitCatalog/Assets.xcassets/bookmark_icon.imageset/bookmark_icon_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 503 B |
BIN
UIKitCatalog/Assets.xcassets/bookmark_icon.imageset/bookmark_icon_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 849 B |
23
UIKitCatalog/Assets.xcassets/bookmark_icon_highlighted.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "bookmark_icon_highlighted_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "bookmark_icon_highlighted_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "bookmark_icon_highlighted_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/bookmark_icon_highlighted.imageset/bookmark_icon_highlighted_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 349 B |
BIN
UIKitCatalog/Assets.xcassets/bookmark_icon_highlighted.imageset/bookmark_icon_highlighted_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 503 B |
BIN
UIKitCatalog/Assets.xcassets/bookmark_icon_highlighted.imageset/bookmark_icon_highlighted_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 864 B |
23
UIKitCatalog/Assets.xcassets/checkmark_icon.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "checkmark_icon_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "checkmark_icon_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "checkmark_icon_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/checkmark_icon.imageset/checkmark_icon_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
UIKitCatalog/Assets.xcassets/checkmark_icon.imageset/checkmark_icon_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
UIKitCatalog/Assets.xcassets/checkmark_icon.imageset/checkmark_icon_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
23
UIKitCatalog/Assets.xcassets/search_bar_background.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "search_bar_bg_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "search_bar_bg_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "search_bar_background_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/search_bar_background.imageset/search_bar_background_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
UIKitCatalog/Assets.xcassets/search_bar_background.imageset/search_bar_bg_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 963 B |
BIN
UIKitCatalog/Assets.xcassets/search_bar_background.imageset/search_bar_bg_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 974 B |
23
UIKitCatalog/Assets.xcassets/search_icon.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "search_icon_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "search_icon_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "search_icon_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/search_icon.imageset/search_icon_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
UIKitCatalog/Assets.xcassets/search_icon.imageset/search_icon_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
UIKitCatalog/Assets.xcassets/search_icon.imageset/search_icon_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
23
UIKitCatalog/Assets.xcassets/slider_blue_track.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_blue_track_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_blue_track_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_blue_track_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/slider_blue_track.imageset/slider_blue_track_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
UIKitCatalog/Assets.xcassets/slider_blue_track.imageset/slider_blue_track_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
UIKitCatalog/Assets.xcassets/slider_blue_track.imageset/slider_blue_track_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
23
UIKitCatalog/Assets.xcassets/slider_green_track.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_green_track_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_green_track_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_green_track_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/slider_green_track.imageset/slider_green_track_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
UIKitCatalog/Assets.xcassets/slider_green_track.imageset/slider_green_track_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
UIKitCatalog/Assets.xcassets/slider_green_track.imageset/slider_green_track_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
23
UIKitCatalog/Assets.xcassets/slider_thumb.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_thumb_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_thumb_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "slider_thumb_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/slider_thumb.imageset/slider_thumb_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
UIKitCatalog/Assets.xcassets/slider_thumb.imageset/slider_thumb_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
UIKitCatalog/Assets.xcassets/slider_thumb.imageset/slider_thumb_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
23
UIKitCatalog/Assets.xcassets/stepper_and_segment_background.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
23
UIKitCatalog/Assets.xcassets/stepper_and_segment_background_disabled.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_disabled_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_disabled_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_disabled_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
23
UIKitCatalog/Assets.xcassets/stepper_and_segment_background_highlighted.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_highlighted_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_highlighted_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_background_highlighted_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
23
UIKitCatalog/Assets.xcassets/stepper_and_segment_segment_divider.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_segment_divider_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_segment_divider_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_and_segment_divider_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 931 B |
|
After Width: | Height: | Size: 931 B |
23
UIKitCatalog/Assets.xcassets/stepper_decrement.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "decrement_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "decrement_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_decrement_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/stepper_decrement.imageset/decrement_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
UIKitCatalog/Assets.xcassets/stepper_decrement.imageset/decrement_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
UIKitCatalog/Assets.xcassets/stepper_decrement.imageset/stepper_decrement_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
23
UIKitCatalog/Assets.xcassets/stepper_increment.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "increment_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "increment_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_increment_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/stepper_increment.imageset/increment_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
UIKitCatalog/Assets.xcassets/stepper_increment.imageset/increment_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
UIKitCatalog/Assets.xcassets/stepper_increment.imageset/stepper_increment_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3 KiB |
23
UIKitCatalog/Assets.xcassets/stepper_increment_disabled.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "increment_disabled_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "increment_disabled_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_increment_disabled_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/stepper_increment_disabled.imageset/increment_disabled_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
UIKitCatalog/Assets.xcassets/stepper_increment_disabled.imageset/increment_disabled_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
UIKitCatalog/Assets.xcassets/stepper_increment_disabled.imageset/stepper_increment_disabled_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3 KiB |
23
UIKitCatalog/Assets.xcassets/stepper_increment_highlighted.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "increment_highlighted_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "increment_highlighted_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "stepper_increment_highlighted_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/stepper_increment_highlighted.imageset/increment_highlighted_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
UIKitCatalog/Assets.xcassets/stepper_increment_highlighted.imageset/increment_highlighted_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3 KiB |
45
UIKitCatalog/Assets.xcassets/text_field_background.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"resizing" : {
|
||||||
|
"mode" : "3-part-horizontal",
|
||||||
|
"center" : {
|
||||||
|
"mode" : "stretch",
|
||||||
|
"width" : 0
|
||||||
|
},
|
||||||
|
"cap-insets" : {
|
||||||
|
"right" : 1,
|
||||||
|
"left" : 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "text_field_background_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resizing" : {
|
||||||
|
"mode" : "3-part-horizontal",
|
||||||
|
"center" : {
|
||||||
|
"mode" : "stretch",
|
||||||
|
"width" : 0
|
||||||
|
},
|
||||||
|
"cap-insets" : {
|
||||||
|
"right" : 1,
|
||||||
|
"left" : 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "text_field_background_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "text_field_background_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/text_field_background.imageset/text_field_background_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
UIKitCatalog/Assets.xcassets/text_field_background.imageset/text_field_background_2x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
UIKitCatalog/Assets.xcassets/text_field_background.imageset/text_field_background_3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
23
UIKitCatalog/Assets.xcassets/text_field_purple_right_view.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "text_field_purple_right_view_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "text_field_purple_right_view_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "text_field_purple_right_view_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 990 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 3 KiB |
21
UIKitCatalog/Assets.xcassets/text_view_attachment.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "Sunset_5.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/text_view_attachment.imageset/Sunset_5.png
vendored
Normal file
|
After Width: | Height: | Size: 163 KiB |
23
UIKitCatalog/Assets.xcassets/toolbar_background.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "toolbar_background_1x.png",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "toolbar_background_2x.png",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"filename" : "toolbar_background_3x.png",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"version" : 1,
|
||||||
|
"author" : "xcode"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
UIKitCatalog/Assets.xcassets/toolbar_background.imageset/toolbar_background_1x.png
vendored
Normal file
|
After Width: | Height: | Size: 963 B |