├── editScreenshot.png
├── dynamicAnimator.gif
├── errorScreenshot.png
├── updatePodToTag.command
├── successScreenshot.png
├── customSubviewScreenshot1.png
├── Example
├── SCLAlertViewExample
│ ├── Images.xcassets
│ │ ├── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── icon.png
│ │ │ ├── icon-40.png
│ │ │ ├── icon-72.png
│ │ │ ├── icon-76.png
│ │ │ ├── icon@2x.png
│ │ │ ├── icon-40@2x.png
│ │ │ ├── icon-40@3x.png
│ │ │ ├── icon-60@2x.png
│ │ │ ├── icon-60@3x.png
│ │ │ ├── icon-72@2x.png
│ │ │ ├── icon-76@2x.png
│ │ │ ├── icon-small.png
│ │ │ ├── icon-83.5@2x.png
│ │ │ ├── icon-small-50.png
│ │ │ ├── icon-small@2x.png
│ │ │ ├── icon-small@3x.png
│ │ │ ├── ios-marketing.png
│ │ │ ├── icon-small-50@2x.png
│ │ │ ├── notification-icon@2x.png
│ │ │ ├── notification-icon@3x.png
│ │ │ ├── notification-icon~ipad.png
│ │ │ ├── notification-icon~ipad@2x.png
│ │ │ └── Contents.json
│ │ ├── custom_icon.imageset
│ │ │ ├── custom_icon.png
│ │ │ └── Contents.json
│ │ └── LaunchImage.launchimage
│ │ │ └── Contents.json
│ ├── custom_icon.png
│ ├── Info.plist
│ ├── AppDelegate.swift
│ ├── Launch Screen.storyboard
│ ├── ViewController.swift
│ ├── Base.lproj
│ │ └── Main.storyboard
│ └── Main.storyboard
├── SCLAlertViewExample.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ ├── calvin.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ │ ├── user.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ │ ├── rkorimba.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ │ └── bilawalhameed.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcuserdata
│ │ ├── user.xcuserdatad
│ │ │ └── xcschemes
│ │ │ │ ├── xcschememanagement.plist
│ │ │ │ └── SCLAlertViewExample.xcscheme
│ │ ├── calvin.xcuserdatad
│ │ │ └── xcschemes
│ │ │ │ ├── xcschememanagement.plist
│ │ │ │ └── SCLAlertViewExample.xcscheme
│ │ ├── rkorimba.xcuserdatad
│ │ │ └── xcschemes
│ │ │ │ ├── xcschememanagement.plist
│ │ │ │ └── SCLAlertViewExample.xcscheme
│ │ └── bilawalhameed.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ └── SCLAlertViewExample.xcscheme
│ └── project.pbxproj
└── SCLAlertViewExampleTests
│ └── Info.plist
├── SCLAlertView.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcuserdata
│ │ ├── alec.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ ├── calvin.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ ├── rkorimba.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ └── AlexanderLingtorp.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── xcuserdata
│ ├── calvin.xcuserdatad
│ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ ├── rkorimba.xcuserdatad
│ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ ├── AlexanderLingtorp.xcuserdatad
│ │ └── xcschemes
│ │ │ └── xcschememanagement.plist
│ └── alec.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
├── xcshareddata
│ └── xcschemes
│ │ └── SCLAlertView.xcscheme
└── project.pbxproj
├── SCLAlertView.xcworkspace
├── xcshareddata
│ └── IDEWorkspaceChecks.plist
└── contents.xcworkspacedata
├── Package.swift
├── .gitignore
├── SCLAlertViewTests
├── Info.plist
├── SCLTextFieldTests.swift
├── SCLPublicConstructorsTest.swift
├── SCLAlertViewInitTests.swift
├── SCLAlertViewStyleTests.swift
├── SCLButtonTests.swift
└── SCLAlertViewPropertiesTests.swift
├── SCLAlertView
├── Info.plist
└── SCLExtensions.swift
├── SCLAlertView.podspec
├── LICENCE
└── README.md
/editScreenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/editScreenshot.png
--------------------------------------------------------------------------------
/dynamicAnimator.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/dynamicAnimator.gif
--------------------------------------------------------------------------------
/errorScreenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/errorScreenshot.png
--------------------------------------------------------------------------------
/updatePodToTag.command:
--------------------------------------------------------------------------------
1 | git tag $1
2 | git push origin $1
3 | pod trunk push SCLAlertView.podspec
4 |
--------------------------------------------------------------------------------
/successScreenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/successScreenshot.png
--------------------------------------------------------------------------------
/customSubviewScreenshot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/customSubviewScreenshot1.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/custom_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/custom_icon.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-40.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-72.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-76.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-72@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small-50.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small@3x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/ios-marketing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/ios-marketing.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/custom_icon.imageset/custom_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/custom_icon.imageset/custom_icon.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/icon-small-50@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon@2x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon@3x.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon~ipad.png
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/notification-icon~ipad@2x.png
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/alec.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/alec.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/calvin.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/calvin.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/rkorimba.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/rkorimba.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/AlexanderLingtorp.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/SCLAlertView.xcodeproj/project.xcworkspace/xcuserdata/AlexanderLingtorp.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/calvin.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/calvin.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/rkorimba.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/rkorimba.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/bilawalhameed.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vikmeup/SCLAlertView-Swift/HEAD/Example/SCLAlertViewExample.xcodeproj/project.xcworkspace/xcuserdata/bilawalhameed.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/SCLAlertView.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/custom_icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "custom_icon.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/SCLAlertView.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
12 |
13 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/xcuserdata/calvin.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SuppressBuildableAutocreation
6 |
7 | 70264EF61B0F588700B32B18
8 |
9 | primary
10 |
11 |
12 | 70264F011B0F588800B32B18
13 |
14 | primary
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/xcuserdata/rkorimba.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SuppressBuildableAutocreation
6 |
7 | 70264EF61B0F588700B32B18
8 |
9 | primary
10 |
11 |
12 | 70264F011B0F588800B32B18
13 |
14 | primary
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/xcuserdata/AlexanderLingtorp.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SuppressBuildableAutocreation
6 |
7 | 70264EF61B0F588700B32B18
8 |
9 | primary
10 |
11 |
12 | 70264F011B0F588800B32B18
13 |
14 | primary
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "iphone",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "portrait",
12 | "idiom" : "iphone",
13 | "extent" : "full-screen",
14 | "minimum-system-version" : "7.0",
15 | "subtype" : "retina4",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.8
2 | // The swift-tools-version declares the minimum version of Swift required to build this package.
3 |
4 | import PackageDescription
5 |
6 | let package = Package(
7 | name: "SCLAlertView",
8 | platforms: [.iOS(.v13)],
9 | products: [
10 | .library(name: "SCLAlertView", targets: ["SCLAlertView"]),
11 | ],
12 | targets: [
13 | .target(name: "SCLAlertView", path: "SCLAlertView"),
14 | .testTarget(
15 | name: "SCLAlertViewTests",
16 | dependencies: ["SCLAlertView"],
17 | path: "SCLAlertViewTests"
18 | )
19 | ],
20 | swiftLanguageVersions: [.v5]
21 | )
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Mac OS X
2 | .DS_Store
3 |
4 | # Xcode
5 |
6 | ## Build generated
7 | build/
8 | DerivedData
9 |
10 | ## Various settings
11 | *.pbxuser
12 | !default.pbxuser
13 | *.mode1v3
14 | !default.mode1v3
15 | *.mode2v3
16 | !default.mode2v3
17 | *.perspectivev3
18 | !default.perspectivev3
19 | xcuserdata
20 |
21 | ## Other
22 | *.xccheckout
23 | *.moved-aside
24 | *.xcuserstate
25 | *.xcscmblueprint
26 |
27 | ## Obj-C/Swift specific
28 | *.hmap
29 | *.ipa
30 |
31 | ## Playgrounds
32 | timeline.xctimeline
33 | playground.xcworkspace
34 |
35 | # Swift Package Manager
36 | .build/
37 | .swiftpm/
38 |
39 | # Carthage
40 | Carthage/Build
41 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/xcuserdata/alec.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | SCLAlertView.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 70264EF61B0F588700B32B18
16 |
17 | primary
18 |
19 |
20 | 70264F011B0F588800B32B18
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | SCLAlertViewExample.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CEABB2401942AD9700FCB13C
16 |
17 | primary
18 |
19 |
20 | CEABB2541942AD9700FCB13C
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/calvin.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | SCLAlertViewExample.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CEABB2401942AD9700FCB13C
16 |
17 | primary
18 |
19 |
20 | CEABB2541942AD9700FCB13C
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/rkorimba.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | SCLAlertViewExample.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CEABB2401942AD9700FCB13C
16 |
17 | primary
18 |
19 |
20 | CEABB2541942AD9700FCB13C
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/bilawalhameed.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | SCLAlertViewExample.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CEABB2401942AD9700FCB13C
16 |
17 | primary
18 |
19 |
20 | CEABB2541942AD9700FCB13C
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/SCLAlertViewTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExampleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/SCLAlertView/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/SCLAlertView.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "SCLAlertView"
3 | s.version = "0.8.1"
4 | s.summary = "Beautiful Alert View. Written in Swift"
5 | s.homepage = "https://github.com/vikmeup/SCLAlertView-Swift"
6 | s.screenshots = "https://raw.githubusercontent.com/vikmeup/SCPopUpView/master/errorScreenshot.png", "https://raw.githubusercontent.com/vikmeup/SCPopUpView/master/successScreenshot.png"
7 | s.license = { :type => "MIT", :file => "LICENCE" }
8 | s.author = { "Viktor" => "yazexel@gmail.com" }
9 | s.social_media_url = "http://twitter.com/vikmeup"
10 | s.platform = :ios
11 | s.ios.deployment_target = '8.0'
12 | s.source = { :git => "https://github.com/vikmeup/SCLAlertView-Swift.git", :tag => s.version }
13 | s.source_files = "SCLAlertView/*.{swift}"
14 | s.swift_version = '5.0'
15 | #s.framework = "QuartzCore"
16 | s.requires_arc = true
17 | end
18 |
--------------------------------------------------------------------------------
/LICENCE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2014 SCPopUpView by Viktor Radchenko
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/SCLAlertViewTests/SCLTextFieldTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SCLATextFieldTests.swift
3 | // SCLAlertView
4 | //
5 | // Created by Christian Cabarrocas on 20/03/16.
6 | // Copyright © 2016 Alexey Poimtsev. All rights reserved.
7 | //
8 |
9 | @testable import SCLAlertView
10 |
11 | import XCTest
12 |
13 | class SCLTextFieldTests: XCTestCase {
14 |
15 | let alert = SCLAlertView()
16 |
17 | override func setUp() {
18 | super.setUp()
19 | }
20 |
21 | override func tearDown() {
22 | super.tearDown()
23 | }
24 |
25 | func testTextFieldFormat() {
26 | let textfield = alert.addTextField("testTextField")
27 | XCTAssertTrue(textfield.isKind(of: UITextField.self))
28 | XCTAssertTrue(textfield.borderStyle == UITextField.BorderStyle.roundedRect)
29 | XCTAssertTrue(textfield.font == UIFont.systemFont(ofSize: 14))
30 | XCTAssertTrue(textfield.autocapitalizationType == UITextAutocapitalizationType.words)
31 | XCTAssertTrue(textfield.clearButtonMode == UITextField.ViewMode.whileEditing)
32 | XCTAssertTrue(textfield.layer.masksToBounds == true)
33 | XCTAssertTrue(textfield.layer.borderWidth == 1.0)
34 | XCTAssertTrue(textfield.placeholder == "testTextField")
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/SCLAlertView/SCLExtensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SCLExtensions.swift
3 | // SCLAlertView
4 | //
5 | // Created by Christian Cabarrocas on 16/04/16.
6 | // Copyright © 2016 Alexey Poimtsev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension Int {
12 |
13 | func toUIColor() -> UIColor {
14 | return UIColor(
15 | red: CGFloat((self & 0xFF0000) >> 16) / 255.0,
16 | green: CGFloat((self & 0x00FF00) >> 8) / 255.0,
17 | blue: CGFloat(self & 0x0000FF) / 255.0,
18 | alpha: CGFloat(1.0)
19 | )
20 | }
21 |
22 | func toCGColor() -> CGColor {
23 | return self.toUIColor().cgColor
24 | }
25 | }
26 |
27 | extension UInt {
28 |
29 | func toUIColor() -> UIColor {
30 | return UIColor(
31 | red: CGFloat((self & 0xFF0000) >> 16) / 255.0,
32 | green: CGFloat((self & 0x00FF00) >> 8) / 255.0,
33 | blue: CGFloat(self & 0x0000FF) / 255.0,
34 | alpha: CGFloat(1.0)
35 | )
36 | }
37 |
38 | func toCGColor() -> CGColor {
39 | return self.toUIColor().cgColor
40 | }
41 | }
42 |
43 | extension String {
44 |
45 | func heightWithConstrainedWidth(width: CGFloat, font: UIFont) -> CGFloat {
46 | let constraintRect = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude)
47 |
48 | let boundingBox = self.boundingRect(with: constraintRect, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
49 |
50 | return boundingBox.height
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | Launch Screen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UIStatusBarTintParameters
34 |
35 | UINavigationBar
36 |
37 | Style
38 | UIBarStyleDefault
39 | Translucent
40 |
41 |
42 |
43 | UISupportedInterfaceOrientations~ipad
44 |
45 | UIInterfaceOrientationPortrait
46 | UIInterfaceOrientationLandscapeLeft
47 | UIInterfaceOrientationLandscapeRight
48 | UIInterfaceOrientationPortraitUpsideDown
49 |
50 | UISupportedInterfaceOrientations~iphone
51 |
52 | UIInterfaceOrientationPortrait
53 | UIInterfaceOrientationLandscapeLeft
54 | UIInterfaceOrientationLandscapeRight
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/SCLAlertViewTests/SCLPublicConstructorsTest.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SCLPublicConstructorsTest.swift
3 | // SCLAlertView
4 | //
5 | // Created by Christian Cabarrocas on 26/03/16.
6 | // Copyright © 2016 Alexey Poimtsev. All rights reserved.
7 | //
8 |
9 | @testable import SCLAlertView
10 |
11 | import XCTest
12 |
13 | class SCLPublicConstructorsTest: XCTestCase {
14 |
15 | override func setUp() {
16 | super.setUp()
17 | }
18 |
19 | override func tearDown() {
20 | super.tearDown()
21 | }
22 |
23 | func testShowSuccess() {
24 | let image = UIImage()
25 | let alert = SCLAlertView()
26 | let timeout = SCLAlertView.SCLTimeoutConfiguration(timeoutValue: 1.0, timeoutAction: { print("Timeout occurred")})
27 | let successReturn = alert.showSuccess("testTitle", subTitle: "testSubTitle", closeButtonTitle: "testClosebutton", timeout: timeout, colorStyle: .white, colorTextButton: .label, circleIconImage: image, window: UIWindow())
28 | XCTAssertNotNil(successReturn)
29 | }
30 |
31 | }
32 |
33 |
34 |
35 | /*
36 | public func showSuccess(title: String, subTitle: String, closeButtonTitle:String?=nil, duration:NSTimeInterval=0.0, colorStyle: UInt=SCLAlertViewStyle.Success.defaultColorInt, colorTextButton: UInt=0xFFFFFF, circleIconImage: UIImage? = nil) -> SCLAlertViewResponder {
37 | return showTitle(title, subTitle: subTitle, duration: duration, completeText:closeButtonTitle, style: .Success, colorStyle: colorStyle, colorTextButton: colorTextButton, circleIconImage: circleIconImage)
38 | }
39 |
40 | public class SCLAlertViewResponder {
41 | let alertview: SCLAlertView
42 |
43 | // Initialisation and Title/Subtitle/Close functions
44 | public init(alertview: SCLAlertView) {
45 | self.alertview = alertview
46 | }
47 |
48 | public func setTitle(title: String) {
49 | self.alertview.labelTitle.text = title
50 | }
51 |
52 | public func setSubTitle(subTitle: String) {
53 | self.alertview.viewText.text = subTitle
54 | }
55 |
56 | public func close() {
57 | self.alertview.hideView()
58 | }
59 |
60 | public func setDismissBlock(dismissBlock: DismissBlock) {
61 | self.alertview.dismissBlock = dismissBlock
62 | }
63 | */
64 |
--------------------------------------------------------------------------------
/SCLAlertViewTests/SCLAlertViewInitTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SCLAlertViewInitTests.swift
3 | // SCLAlertView
4 | //
5 | // Created by Christian Cabarrocas on 20/03/16.
6 | // Copyright © 2016 Alexey Poimtsev. All rights reserved.
7 | //
8 |
9 | @testable import SCLAlertView
10 |
11 | import XCTest
12 |
13 | class SCLAlertViewInitTests: XCTestCase {
14 |
15 | let alert = SCLAlertView()
16 |
17 | override func setUp() {
18 | super.setUp()
19 | }
20 |
21 | override func tearDown() {
22 | super.tearDown()
23 | }
24 |
25 | func testViewFrame() {
26 | XCTAssertTrue(alert.view.frame == UIScreen.main.bounds)
27 | }
28 |
29 | func testViewResizingMask() {
30 | XCTAssertTrue(alert.view.autoresizingMask == [UIView.AutoresizingMask.flexibleHeight, UIView.AutoresizingMask.flexibleWidth])
31 | }
32 |
33 | func testViewBackgroundColor() {
34 | XCTAssertTrue(alert.view.backgroundColor == UIColor(red:0, green:0, blue:0, alpha:0.7))
35 | }
36 |
37 | func testViewSubViews() {
38 | XCTAssertTrue(alert.view.subviews.count == 1)
39 | let subview = alert.view.subviews[0]
40 | XCTAssertTrue(subview.isKind(of: UIView.self))
41 | }
42 |
43 | func testContentViewCornerRadius() {
44 | XCTAssertTrue(alert.contentView.layer.cornerRadius == 5.0)
45 | }
46 |
47 | func testContentViewMaskToBounds() {
48 | XCTAssertTrue(alert.contentView.layer.masksToBounds == true)
49 | }
50 |
51 | func testContentViewBorderWidth() {
52 | XCTAssertTrue(alert.contentView.layer.borderWidth == 0.5)
53 | }
54 |
55 | func testContentViewLabeltitle() {
56 | XCTAssertTrue(alert.contentView.subviews.count == 2)
57 | let subview1 = alert.contentView.subviews[0]
58 | XCTAssertTrue(subview1.isKind(of: UILabel.self))
59 | let subview2 = alert.contentView.subviews[1]
60 | XCTAssertTrue(subview2.isKind(of: UITextView.self))
61 | alert.addButton("testButtonTitle") {}
62 | let subview3 = alert.contentView.subviews[2]
63 | XCTAssertTrue(subview3.isKind(of: SCLButton.self))
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // SCLAlertViewExample
4 | //
5 | // Created by Viktor Radchenko on 6/6/14.
6 | // Copyright (c) 2014 Viktor Radchenko. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | var window: UIWindow?
15 |
16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
17 | // Override point for customization after application launch.
18 | return true
19 | }
20 |
21 | func applicationWillResignActive(_ application: UIApplication) {
22 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
23 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
24 | }
25 |
26 | func applicationDidEnterBackground(_ application: UIApplication) {
27 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
29 | }
30 |
31 | func applicationWillEnterForeground(_ application: UIApplication) {
32 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
33 | }
34 |
35 | func applicationDidBecomeActive(_ application: UIApplication) {
36 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
37 | }
38 |
39 | func applicationWillTerminate(_ application: UIApplication) {
40 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
41 | }
42 |
43 |
44 | }
45 |
46 |
--------------------------------------------------------------------------------
/SCLAlertViewTests/SCLAlertViewStyleTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SCLAlertViewTests.swift
3 | // SCLAlertViewTests
4 | //
5 | // Created by Alexey Poimtsev on 22/05/15.
6 | // Copyright (c) 2015 Alexey Poimtsev. All rights reserved.
7 | //
8 |
9 | @testable import SCLAlertView
10 |
11 | import UIKit
12 | import XCTest
13 |
14 | class SCLAlertViewStyleTests: XCTestCase {
15 |
16 | override func setUp() {
17 | super.setUp()
18 | }
19 |
20 | override func tearDown() {
21 | super.tearDown()
22 | }
23 |
24 | func testSCLAlertViewStyleColorSuccess() {
25 | let style = SCLAlertViewStyle.success
26 | XCTAssertTrue(style.defaultColor == UIColorFromRGB(0x22B573))
27 | }
28 |
29 | func testSCLAlertViewStyleColorError() {
30 | let style = SCLAlertViewStyle.error
31 | XCTAssertEqual(
32 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .dark)),
33 | .red
34 | )
35 | XCTAssertEqual(
36 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .light)),
37 | UIColorFromRGB(0xC1272D)
38 | )
39 | }
40 |
41 | func testSCLAlertViewStyleColorNotice() {
42 | let style = SCLAlertViewStyle.notice
43 | XCTAssertEqual(
44 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .dark)),
45 | UIColorFromRGB(0xC6C6C6)
46 | )
47 | XCTAssertEqual(
48 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .light)),
49 | UIColorFromRGB(0x727375)
50 | )
51 | }
52 |
53 | func testSCLAlertViewStyleColorWarning() {
54 | let style = SCLAlertViewStyle.warning
55 | XCTAssertTrue(style.defaultColor == UIColorFromRGB(0xFFD110))
56 | }
57 |
58 | func testSCLAlertViewStyleColorInfo() {
59 | let style = SCLAlertViewStyle.info
60 | XCTAssertEqual(
61 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .dark)),
62 | UIColorFromRGB(0x6ABCE7)
63 | )
64 | XCTAssertEqual(
65 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .light)),
66 | UIColorFromRGB(0x2866BF)
67 | )
68 | }
69 |
70 | func testSCLAlertViewStyleColorEdit() {
71 | let style = SCLAlertViewStyle.edit
72 | XCTAssertEqual(
73 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .dark)),
74 | UIColorFromRGB(0xD194FF)
75 | )
76 | XCTAssertEqual(
77 | style.defaultColor.resolvedColor(with: UITraitCollection(userInterfaceStyle: .light)),
78 | UIColorFromRGB(0xA429FF)
79 | )
80 | }
81 |
82 | func testSCLAlertViewStyleColorWait() {
83 | let style = SCLAlertViewStyle.wait
84 | XCTAssertTrue(style.defaultColor == UIColorFromRGB(0xD62DA5))
85 | }
86 |
87 | func testSCLButtonTypeOnCreate() {
88 | let button = SCLButton()
89 | XCTAssertTrue(button.actionType == SCLActionType.none)
90 | }
91 |
92 | }
93 |
94 | fileprivate extension UIColor {
95 | convenience init(light: UIColor, dark: UIColor) {
96 | self.init(dynamicProvider: { traitCollection in
97 | return traitCollection.userInterfaceStyle == .dark ? dark : light
98 | })
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "notification-icon@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "notification-icon@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "icon-small.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "icon-small@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "icon-small@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "icon-40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "icon-40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "57x57",
47 | "idiom" : "iphone",
48 | "filename" : "icon.png",
49 | "scale" : "1x"
50 | },
51 | {
52 | "size" : "57x57",
53 | "idiom" : "iphone",
54 | "filename" : "icon@2x.png",
55 | "scale" : "2x"
56 | },
57 | {
58 | "size" : "60x60",
59 | "idiom" : "iphone",
60 | "filename" : "icon-60@2x.png",
61 | "scale" : "2x"
62 | },
63 | {
64 | "size" : "60x60",
65 | "idiom" : "iphone",
66 | "filename" : "icon-60@3x.png",
67 | "scale" : "3x"
68 | },
69 | {
70 | "size" : "20x20",
71 | "idiom" : "ipad",
72 | "filename" : "notification-icon~ipad.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "20x20",
77 | "idiom" : "ipad",
78 | "filename" : "notification-icon~ipad@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "29x29",
83 | "idiom" : "ipad",
84 | "filename" : "icon-small.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "29x29",
89 | "idiom" : "ipad",
90 | "filename" : "icon-small@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "40x40",
95 | "idiom" : "ipad",
96 | "filename" : "icon-40.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "40x40",
101 | "idiom" : "ipad",
102 | "filename" : "icon-40@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "50x50",
107 | "idiom" : "ipad",
108 | "filename" : "icon-small-50.png",
109 | "scale" : "1x"
110 | },
111 | {
112 | "size" : "50x50",
113 | "idiom" : "ipad",
114 | "filename" : "icon-small-50@2x.png",
115 | "scale" : "2x"
116 | },
117 | {
118 | "size" : "72x72",
119 | "idiom" : "ipad",
120 | "filename" : "icon-72.png",
121 | "scale" : "1x"
122 | },
123 | {
124 | "size" : "72x72",
125 | "idiom" : "ipad",
126 | "filename" : "icon-72@2x.png",
127 | "scale" : "2x"
128 | },
129 | {
130 | "size" : "76x76",
131 | "idiom" : "ipad",
132 | "filename" : "icon-76.png",
133 | "scale" : "1x"
134 | },
135 | {
136 | "size" : "76x76",
137 | "idiom" : "ipad",
138 | "filename" : "icon-76@2x.png",
139 | "scale" : "2x"
140 | },
141 | {
142 | "size" : "83.5x83.5",
143 | "idiom" : "ipad",
144 | "filename" : "icon-83.5@2x.png",
145 | "scale" : "2x"
146 | },
147 | {
148 | "size" : "1024x1024",
149 | "idiom" : "ios-marketing",
150 | "filename" : "ios-marketing.png",
151 | "scale" : "1x"
152 | }
153 | ],
154 | "info" : {
155 | "version" : 1,
156 | "author" : "xcode"
157 | }
158 | }
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/bilawalhameed.xcuserdatad/xcschemes/SCLAlertViewExample.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
61 |
62 |
68 |
69 |
70 |
71 |
72 |
73 |
79 |
80 |
86 |
87 |
88 |
89 |
91 |
92 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/SCLAlertViewTests/SCLButtonTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SCLButtonTests.swift
3 | // SCLAlertView
4 | //
5 | // Created by Christian Cabarrocas on 22/03/16.
6 | // Copyright © 2016 Alexey Poimtsev. All rights reserved.
7 | //
8 |
9 | @testable import SCLAlertView
10 |
11 | import XCTest
12 |
13 | class SCLButtonTests: XCTestCase {
14 |
15 | override func setUp() {
16 | super.setUp()
17 | }
18 |
19 | override func tearDown() {
20 | super.tearDown()
21 | }
22 |
23 | func testButtonClassType() {
24 | let alert = SCLAlertView()
25 | alert.addButton("testButtonTitle") {}
26 | let type = alert.buttons[0].isKind(of: SCLButton.self)
27 | XCTAssertTrue(type == true)
28 | }
29 |
30 | func testButtonProperties() {
31 | let alert = SCLAlertView()
32 | alert.addButton("testButtonTitle") {}
33 | let button = alert.buttons[0]
34 | XCTAssertTrue(button.layer.masksToBounds == true)
35 | XCTAssertTrue(button.titleLabel?.text == "testButtonTitle")
36 | XCTAssertTrue(button.titleLabel?.font == UIFont.boldSystemFont(ofSize: 14))
37 | }
38 |
39 | func testButtonAddedToAlert() {
40 | let alert = SCLAlertView()
41 | alert.addButton("testButtonTitle") {}
42 | XCTAssertTrue(alert.contentView.subviews.count == 3)
43 | XCTAssertTrue(alert.contentView.subviews[2].isKind(of: SCLButton.self))
44 | }
45 |
46 | func actionHelperForTests() -> Void {
47 | print("testingButtonActions")
48 | }
49 |
50 | func testActionAddedToButton() {
51 | let alert = SCLAlertView()
52 | alert.addButton("testButtontitle") {self.actionHelperForTests()}
53 | let button = alert.buttons[0]
54 | XCTAssertNotNil(button.action)
55 | }
56 |
57 | func testButtonTargets() {
58 | let alert = SCLAlertView()
59 | alert.addButton("testButtonTitle") {}
60 | let buttonTargets = alert.buttons[0].allTargets.first
61 | let button = alert.buttons[0]
62 |
63 | let actionsTouchUpInside = button.actions(forTarget: buttonTargets, forControlEvent: .touchUpInside)
64 | XCTAssertTrue(actionsTouchUpInside![0] == "buttonTapped:")
65 | XCTAssertTrue(actionsTouchUpInside![1] == "buttonRelease:")
66 |
67 | let buttonActionsTouchDown = button.actions(forTarget: buttonTargets, forControlEvent: .touchDown)
68 | XCTAssertTrue(buttonActionsTouchDown![0] == "buttonTapDown:")
69 |
70 | let buttonActionsTouchDragEnter = button.actions(forTarget: buttonTargets, forControlEvent: .touchDragEnter)
71 | XCTAssertTrue(buttonActionsTouchDragEnter![0] == "buttonTapDown:")
72 |
73 | let buttonActionsTouchCancel = button.actions(forTarget: buttonTargets, forControlEvent: .touchCancel)
74 | XCTAssertTrue(buttonActionsTouchCancel![0] == "buttonRelease:")
75 |
76 | let buttonActionsTouchDragOutside = button.actions(forTarget: buttonTargets, forControlEvent: .touchDragOutside)
77 | XCTAssertTrue(buttonActionsTouchDragOutside![0] == "buttonRelease:")
78 |
79 | let buttonActionsTouchUpOutside = button.actions(forTarget: buttonTargets, forControlEvent: .touchUpOutside)
80 | XCTAssertTrue(buttonActionsTouchUpOutside![0] == "buttonRelease:")
81 | }
82 |
83 | func testButtonSelectorAndTarget() {
84 | let alert = SCLAlertView()
85 | let testTarget = SCLAlertView()
86 | alert.addButton("testButtonTitle", target: testTarget, selector: #selector(testSelector))
87 | let button = alert.buttons[0]
88 | XCTAssertTrue(button.target.isKind(of: SCLAlertView.self))
89 | XCTAssertTrue(button.selector == #selector(testSelector))
90 | XCTAssertTrue(button.actionType == SCLActionType.selector)
91 |
92 | }
93 |
94 | func testSelector() {
95 |
96 | }
97 |
98 | func testButtonActionType() {
99 | let alert = SCLAlertView()
100 | alert.addButton("testButtonTitle") {}
101 | let button = alert.buttons[0]
102 | XCTAssertTrue(button.actionType == SCLActionType.closure)
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/calvin.xcuserdatad/xcschemes/SCLAlertViewExample.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
53 |
54 |
64 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
85 |
91 |
92 |
93 |
94 |
96 |
97 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/SCLAlertViewExample.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
53 |
54 |
64 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
85 |
91 |
92 |
93 |
94 |
96 |
97 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/xcshareddata/xcschemes/SCLAlertView.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
51 |
52 |
53 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
78 |
79 |
85 |
86 |
87 |
88 |
94 |
95 |
101 |
102 |
103 |
104 |
106 |
107 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Launch Screen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
27 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/SCLAlertViewTests/SCLAlertViewPropertiesTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SCLAlertViewTests.swift
3 | // SCLAlertView
4 | //
5 | // Created by Christian Cabarrocas on 19/03/16.
6 | // Copyright © 2016 Alexey Poimtsev. All rights reserved.
7 | //
8 |
9 | @testable import SCLAlertView
10 |
11 | import XCTest
12 |
13 | class SCLAlertViewPropertiesTests: XCTestCase {
14 |
15 | let alert = SCLAlertView()
16 |
17 | override func setUp() {
18 | super.setUp()
19 | }
20 |
21 | override func tearDown() {
22 | super.tearDown()
23 | }
24 |
25 | func testSCLAlertViewShadowOpacity() {
26 | XCTAssertTrue(alert.appearance.kDefaultShadowOpacity == 0.7)
27 | }
28 |
29 | func testSCLAlertViewCircleTopPosition() {
30 | XCTAssertTrue(alert.appearance.kCircleTopPosition == 0.0)
31 | }
32 |
33 | func testSCLAlertViewBackgroundTopPosition() {
34 | XCTAssertTrue(alert.appearance.kCircleBackgroundTopPosition == 6.0)
35 | }
36 |
37 | func testSCLAlertViewCircleHeight() {
38 | XCTAssertTrue(alert.appearance.kCircleHeight == 56.0)
39 | }
40 |
41 | func testSCLAlertViewIconHeight() {
42 | XCTAssertTrue(alert.appearance.kCircleIconHeight == 20.0)
43 | }
44 |
45 | func testSCLAlertViewTitleHeight() {
46 | XCTAssertTrue(alert.appearance.kTitleHeight == 25.0)
47 | }
48 |
49 | func testSCLAlertViewWindowWidth() {
50 | XCTAssertTrue(alert.appearance.kWindowWidth == 240.0)
51 | }
52 |
53 | func testSCLAlertViewWindowHeight() {
54 | XCTAssertTrue(alert.appearance.kWindowHeight == 178.0)
55 | }
56 |
57 | func testSCLAlertViewTextHeight() {
58 | XCTAssertTrue(alert.appearance.kTextHeight == 90.0)
59 | }
60 |
61 | func testSCLAlertViewTextFieldHeight() {
62 | XCTAssertTrue(alert.appearance.kTextFieldHeight == 30.0)
63 | }
64 |
65 | func testSCLAlertViewTextButtonHeight() {
66 | XCTAssertTrue(alert.appearance.kButtonHeight == 35.0)
67 | }
68 |
69 | func testSCLAlertViewTitleFont() {
70 | XCTAssertTrue(alert.appearance.kTitleFont == UIFont.systemFont(ofSize: 20))
71 | }
72 |
73 | func testSCLAlertViewTextFont() {
74 | XCTAssertTrue(alert.appearance.kTextFont == UIFont.systemFont(ofSize: 14))
75 | }
76 |
77 | func testSCLAlertViewButtonFont() {
78 | XCTAssertTrue(alert.appearance.kButtonFont == UIFont.boldSystemFont(ofSize: 14))
79 | }
80 |
81 | func testSCLAlertViewColor() {
82 | XCTAssertTrue(alert.viewColor.isKind(of:UIColor.self))
83 | }
84 |
85 | func testSCLAlertViewShowCloseButton() {
86 | XCTAssertTrue(alert.appearance.showCloseButton == true)
87 | }
88 |
89 | func testSCLAlertViewShowCircularIcon() {
90 | XCTAssertTrue(alert.appearance.showCircularIcon == true)
91 | }
92 |
93 | func testSCLAlertViewContentViewCornerRadius() {
94 | XCTAssertTrue(alert.appearance.contentViewCornerRadius == 5.0)
95 | }
96 |
97 | func testSCLAlertViewFieldCornerRadius() {
98 | XCTAssertTrue(alert.appearance.fieldCornerRadius == 3.0)
99 | }
100 |
101 | func testSCLAlertViewButtonCornerRadius() {
102 | XCTAssertTrue(alert.appearance.buttonCornerRadius == 3.0)
103 | }
104 |
105 | func testSCLAlertViewHideWhenBackgroundViewIsTapped() {
106 | XCTAssertTrue(alert.appearance.hideWhenBackgroundViewIsTapped == false)
107 | }
108 |
109 | func testSCLAlertViewBaseView() {
110 | XCTAssertTrue(alert.baseView.isKind(of:UIView.self))
111 | }
112 |
113 | func testSCLAlertViewLabelTitle() {
114 | XCTAssertTrue(alert.labelTitle.isKind(of:UILabel.self))
115 | }
116 |
117 | func testSCLAlertViewViewText() {
118 | XCTAssertTrue(alert.viewText.isKind(of:UITextView.self))
119 | }
120 |
121 | func testSCLAlertViewContentView() {
122 | XCTAssertTrue(alert.contentView.isKind(of:UIView.self))
123 | }
124 |
125 | func testSCLAlertViewCircleBG() {
126 | XCTAssertTrue(alert.circleBG.isKind(of:UIView.self))
127 | XCTAssertTrue(alert.circleBG.frame.origin.x == 0)
128 | XCTAssertTrue(alert.circleBG.frame.origin.y == 0)
129 | XCTAssertTrue(alert.circleBG.frame.size.width == kCircleHeightBackground)
130 | XCTAssertTrue(alert.circleBG.frame.size.height == kCircleHeightBackground)
131 | }
132 |
133 | func testSCLAlertViewCircleView() {
134 | XCTAssertTrue(alert.circleView.isKind(of:UIView.self))
135 | }
136 |
137 | func testSCLAlertViewCircleIconView() {
138 | if let iconView = alert.circleIconView {
139 | XCTAssertTrue(iconView.isKind(of:UIView.self))
140 | }else {
141 | XCTAssertTrue(alert.circleIconView == nil)
142 | }
143 | }
144 |
145 | func testSCLAlertViewTimeoutTimer() {
146 | if let timer = alert.timeoutTimer {
147 | XCTAssertTrue(timer.isKind(of:Timer.self))
148 | }else {
149 | XCTAssertTrue(alert.timeoutTimer == nil)
150 | }
151 | }
152 | }
153 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/xcuserdata/rkorimba.xcuserdatad/xcschemes/SCLAlertViewExample.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
44 |
45 |
47 |
53 |
54 |
55 |
56 |
57 |
63 |
64 |
65 |
66 |
75 |
77 |
83 |
84 |
85 |
86 |
87 |
88 |
94 |
96 |
102 |
103 |
104 |
105 |
107 |
108 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // SCLAlertViewExample
4 | //
5 | // Created by Viktor Radchenko on 6/6/14.
6 | // Copyright (c) 2014 Viktor Radchenko. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import SCLAlertView
11 |
12 |
13 | let kSuccessTitle = "Congratulations"
14 | let kErrorTitle = "Connection error"
15 | let kNoticeTitle = "Notice"
16 | let kWarningTitle = "Warning"
17 | let kInfoTitle = "Info"
18 | let kSubtitle = "You've just displayed this awesome Pop Up View"
19 |
20 | let kDefaultAnimationDuration = 2.0
21 |
22 | class ViewController: UIViewController {
23 |
24 | override func viewDidLoad() {
25 | super.viewDidLoad()
26 |
27 | // Do any additional setup after loading the view, typically from a nib.
28 | }
29 |
30 | override func didReceiveMemoryWarning() {
31 | super.didReceiveMemoryWarning()
32 | // Dispose of any resources that can be recreated.
33 | }
34 |
35 | @IBAction func showSuccess(_ sender: AnyObject) {
36 | let alert = SCLAlertView()
37 | _ = alert.addButton("First Button", target:self, selector:#selector(ViewController.firstButton))
38 | _ = alert.addButton("Second Button") {
39 | print("Second button tapped")
40 | }
41 | _ = alert.showSuccess(kSuccessTitle, subTitle: kSubtitle)
42 | }
43 |
44 | @IBAction func showError(_ sender: AnyObject) {
45 | _ = SCLAlertView().showError("Hold On...", subTitle:"You have not saved your Submission yet. Please save the Submission before accessing the Responses list. Blah de blah de blah, blah. Blah de blah de blah, blah.Blah de blah de blah, blah.Blah de blah de blah, blah.Blah de blah de blah, blah.Blah de blah de blah, blah.", closeButtonTitle:"OK")
46 | // SCLAlertView().showError(self, title: kErrorTitle, subTitle: kSubtitle)
47 | }
48 |
49 | @IBAction func showNotice(_ sender: AnyObject) {
50 | let appearance = SCLAlertView.SCLAppearance(dynamicAnimatorActive: true)
51 | _ = SCLAlertView(appearance: appearance).showNotice(kNoticeTitle, subTitle: kSubtitle)
52 | }
53 |
54 | @IBAction func showWarning(_ sender: AnyObject) {
55 | _ = SCLAlertView().showWarning(kWarningTitle, subTitle: kSubtitle)
56 | }
57 |
58 | @IBAction func showInfo(_ sender: AnyObject) {
59 | _ = SCLAlertView().showInfo(kInfoTitle, subTitle: kSubtitle)
60 | }
61 |
62 | @IBAction func showEdit(_ sender: AnyObject) {
63 | let appearance = SCLAlertView.SCLAppearance(
64 | kTextFieldHeight: 60,
65 | showCloseButton: true
66 | )
67 | let alert = SCLAlertView(appearance: appearance)
68 | let txt = alert.addTextField("Enter your name")
69 | _ = alert.addButton("Show Name") {
70 | print("Text value: \(txt.text ?? "NA")")
71 | }
72 | _ = alert.showEdit(kInfoTitle, subTitle:kSubtitle)
73 | }
74 |
75 | @IBAction func showWait(_ sender: AnyObject) {
76 | let appearance = SCLAlertView.SCLAppearance(
77 | showCloseButton: false
78 | )
79 |
80 | let alert = SCLAlertView(appearance: appearance).showWait("Download", subTitle: "Processing...", closeButtonTitle: nil, timeout: nil, colorStyle: nil, colorTextButton: .white, circleIconImage: nil, animationStyle: SCLAnimationStyle.topToBottom)
81 |
82 | DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
83 | alert.setSubTitle("Progress: 10%")
84 |
85 | DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
86 | alert.setSubTitle("Progress: 30%")
87 |
88 | DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
89 | alert.setSubTitle("Progress: 50%")
90 |
91 | DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
92 | alert.setSubTitle("Progress: 70%")
93 |
94 | DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
95 | alert.setSubTitle("Progress: 90%")
96 |
97 | DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
98 | alert.close()
99 | }
100 | }
101 | }
102 | }
103 | }
104 | }
105 | }
106 |
107 | @IBAction func showCustomSubview(_ sender: AnyObject) {
108 | // Create custom Appearance Configuration
109 | let appearance = SCLAlertView.SCLAppearance(
110 | kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!,
111 | kTextFont: UIFont(name: "HelveticaNeue", size: 14)!,
112 | kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!,
113 | showCloseButton: false,
114 | dynamicAnimatorActive: true
115 | )
116 |
117 | // Initialize SCLAlertView using custom Appearance
118 | let alert = SCLAlertView(appearance: appearance)
119 |
120 | // Creat the subview
121 | let subview = UIView(frame: CGRect(x: 0,y: 0,width: 216,height: 70))
122 | let x = (subview.frame.width - 180) / 2
123 |
124 | // Add textfield 1
125 | let textfield1 = UITextField(frame: CGRect(x: x,y: 10,width: 180,height: 25))
126 | textfield1.layer.borderColor = UIColor.green.cgColor
127 | textfield1.layer.borderWidth = 1.5
128 | textfield1.layer.cornerRadius = 5
129 | textfield1.placeholder = "Username"
130 | textfield1.textAlignment = NSTextAlignment.center
131 | subview.addSubview(textfield1)
132 |
133 | // Add textfield 2
134 | let textfield2 = UITextField(frame: CGRect(x: x,y: textfield1.frame.maxY + 10,width: 180,height: 25))
135 | textfield2.isSecureTextEntry = true
136 | textfield2.layer.borderColor = UIColor.blue.cgColor
137 | textfield2.layer.borderWidth = 1.5
138 | textfield2.layer.cornerRadius = 5
139 | textfield1.layer.borderColor = UIColor.blue.cgColor
140 | textfield2.placeholder = "Password"
141 | textfield2.textAlignment = NSTextAlignment.center
142 | subview.addSubview(textfield2)
143 |
144 | // Add the subview to the alert's UI property
145 | alert.customSubview = subview
146 | _ = alert.addButton("Login") {
147 | print("Logged in")
148 | }
149 |
150 | // Add Button with visible timeout and custom Colors
151 | let showTimeout = SCLButton.ShowTimeoutConfiguration(prefix: "(", suffix: " s)")
152 | _ = alert.addButton("Timeout Button", backgroundColor: UIColor.brown, textColor: UIColor.yellow, showTimeout: showTimeout) {
153 | print("Timeout Button tapped")
154 | }
155 |
156 | let timeoutValue: TimeInterval = 10.0
157 | let timeoutAction: SCLAlertView.SCLTimeoutConfiguration.ActionType = {
158 | print("Timeout occurred")
159 | }
160 |
161 | _ = alert.showInfo("Login", subTitle: "", timeout: SCLAlertView.SCLTimeoutConfiguration(timeoutValue: timeoutValue, timeoutAction: timeoutAction))
162 | }
163 |
164 | @IBAction func showCustomAlert(_ sender: AnyObject) {
165 | let appearance = SCLAlertView.SCLAppearance(
166 | kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!,
167 | kTextFont: UIFont(name: "HelveticaNeue", size: 14)!,
168 | kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!,
169 | showCloseButton: false,
170 | dynamicAnimatorActive: true,
171 | buttonsLayout: .horizontal
172 | )
173 | let alert = SCLAlertView(appearance: appearance)
174 | _ = alert.addButton("First Button", target:self, selector:#selector(ViewController.firstButton))
175 | _ = alert.addButton("Second Button") {
176 | print("Second button tapped")
177 | }
178 |
179 | let icon = UIImage(named:"custom_icon.png")
180 | let color = UIColor.orange
181 |
182 | _ = alert.showCustom("Custom Color", subTitle: "Custom color", color: color, circleIconImage: icon!)
183 | }
184 |
185 | @IBAction func showEmptySubTitleAlert(_ sender: UIButton) {
186 | let margin = SCLAlertView.SCLAppearance.Margin(buttonSpacing: 30,
187 | bottom: 30,
188 | horizontal: 30)
189 |
190 | let appearance = SCLAlertView.SCLAppearance(
191 | kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!,
192 | kTextFont: UIFont(name: "HelveticaNeue", size: 14)!,
193 | kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!,
194 | shouldAutoDismiss: true,
195 | margin: margin
196 | )
197 | let alert = SCLAlertView(appearance: appearance)
198 | _ = alert.addButton("First", target:self, selector:#selector(ViewController.firstButton))
199 |
200 | let icon = UIImage(named:"custom_icon.png")
201 | let color = UIColor.orange
202 |
203 | _ = alert.showCustom("Empty SubTitle Alert", subTitle: "This is an empty subTitle alertView with horizontal and bottom margin equals 30", color: color, circleIconImage: icon!)
204 |
205 | }
206 |
207 | @objc func firstButton() {
208 | print("First button tapped")
209 | }
210 |
211 | }
212 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | SCLAlertView
2 | ===========
3 |
4 | [](http://cocoadocs.org/docsets/SCLAlertView/)
5 | [](https://github.com/Carthage/Carthage)
6 |
7 | Animated Alert View written in Swift, which can be used as a `UIAlertView` or `UIAlertController` replacement with nice customization features.
8 |
9 | _
10 | 
11 |
12 | Easy to use
13 | ----
14 |
15 | ### Get Started
16 |
17 | ```swift
18 | // Get started
19 | SCLAlertView().showInfo("Important info", subTitle: "You are great")
20 | ```
21 |
22 | ### Updating the alert view
23 |
24 | ```swift
25 | let alertViewResponder: SCLAlertViewResponder = SCLAlertView().showSuccess("Hello World", subTitle: "This is a more descriptive text.")
26 |
27 | // Upon displaying, change/close view
28 | alertViewResponder.setTitle("New Title") // Rename title
29 | alertViewResponder.setSubTitle("New description") // Rename subtitle
30 | alertViewResponder.close() // Close view
31 | ```
32 |
33 | ### Alternative alert types
34 |
35 | ```
36 | SCLAlertView().showError("Hello Error", subTitle: "This is a more descriptive error text.") // Error
37 | SCLAlertView().showNotice("Hello Notice", subTitle: "This is a more descriptive notice text.") // Notice
38 | SCLAlertView().showWarning("Hello Warning", subTitle: "This is a more descriptive warning text.") // Warning
39 | SCLAlertView().showInfo("Hello Info", subTitle: "This is a more descriptive info text.") // Info
40 | SCLAlertView().showEdit("Hello Edit", subTitle: "This is a more descriptive info text.") // Edit
41 | ```
42 |
43 | ### Raw call to showTitle()
44 |
45 | ```swift
46 | SCLAlertView().showTitle(
47 | "Congratulations", // Title of view
48 | subTitle: "Operation successfully completed.", // String of view
49 | duration: 2.0, // Duration to show before closing automatically, default: 0.0
50 | completeText: "Done", // Optional button value, default: ""
51 | style: .success, // Styles - see below.
52 | colorStyle: UIColorFromRGB(0xA429FF),
53 | colorTextButton: .white
54 | )
55 | ```
56 |
57 | ### Controls
58 |
59 | #### Custom Appearance
60 |
61 | ```swift
62 | // SCLAlertView.SCLAppearanc has more than 15 different properties to customize. See below.
63 |
64 | let appearance = SCLAlertView.SCLAppearance(
65 | kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!,
66 | kTextFont: UIFont(name: "HelveticaNeue", size: 14)!,
67 | kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!,
68 | showCloseButton: false
69 | )
70 |
71 | let alert = SCLAlertView(appearance: appearance)
72 | ```
73 |
74 | #### Add buttons
75 |
76 | ```swift
77 | let alertView = SCLAlertView()
78 | alertView.addButton("First Button", target:self, selector:Selector("firstButton"))
79 | alertView.addButton("Second Button") {
80 | print("Second button tapped")
81 | }
82 | alertView.showSuccess("Button View", subTitle: "This alert view has buttons")
83 | ```
84 |
85 | #### Hide default close button
86 |
87 | ```swift
88 | let appearance = SCLAlertView.SCLAppearance(
89 | showCloseButton: false
90 | )
91 | let alertView = SCLAlertView(appearance: appearance)
92 | alertView.showSuccess("No button", subTitle: "You will have hard times trying to close me")
93 | ```
94 |
95 | #### Hide default close button & a duration to close the alert
96 |
97 | ```swift
98 | let appearance = SCLAlertView.SCLAppearance(
99 | showCloseButton: false
100 | )
101 | let alertView = SCLAlertView(appearance: appearance)
102 | alertView.showWarning("No button", subTitle: "Just wait for 3 seconds and I will disappear", duration: 3)
103 | ```
104 |
105 |
106 | #### Hide alert icon
107 |
108 | ```swift
109 | let appearance = SCLAlertView.SCLAppearance(
110 | showCircularIcon: false
111 | )
112 | let alertView = SCLAlertView(appearance: appearance)
113 | alertView.showSuccess("No icon", subTitle: "This is a clean alert without Icon!")
114 | ```
115 |
116 | #### Use a custom icon
117 |
118 | ```swift
119 | let appearance = SCLAlertView.SCLAppearance(
120 | showCircularIcon: true
121 | )
122 | let alertView = SCLAlertView(appearance: appearance)
123 | let alertViewIcon = UIImage(named: "IconImage") //Replace the IconImage text with the image name
124 | alertView.showInfo("Custom icon", subTitle: "This is a nice alert with a custom icon you choose", circleIconImage: alertViewIcon)
125 | ```
126 |
127 |
128 | #### Add Text fields
129 |
130 | ```swift
131 | // Add a text field
132 | let alert = SCLAlertView()
133 | let txt = alert.addTextField("Enter your name")
134 | alert.addButton("Show Name") {
135 | print("Text value: \(txt.text)")
136 | }
137 | alert.showEdit("Edit View", subTitle: "This alert view shows a text box")
138 |
139 | ```
140 |
141 | #### Use a custom subview instead of a subtitle
142 | ```swift
143 | // Example of using the view to add two text fields to the alert
144 | // Create custom Appearance Configuration
145 | let appearance = SCLAlertView.SCLAppearance(
146 | kTitleFont: UIFont(name: "HelveticaNeue", size: 20)!,
147 | kTextFont: UIFont(name: "HelveticaNeue", size: 14)!,
148 | kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)!,
149 | showCloseButton: false,
150 | dynamicAnimatorActive: true
151 | )
152 |
153 | // Initialize SCLAlertView using custom Appearance
154 | let alert = SCLAlertView(appearance: appearance)
155 |
156 | // Creat the subview
157 | let subview = UIView(frame: CGRect(x: 0,y: 0,width: 216,height: 70))
158 | let x = (subview.frame.width - 180) / 2
159 |
160 | // Add textfield 1
161 | let textfield1 = UITextField(frame: CGRect(x: x,y: 10,width: 180,height: 25))
162 | textfield1.layer.borderColor = UIColor.green.cgColor
163 | textfield1.layer.borderWidth = 1.5
164 | textfield1.layer.cornerRadius = 5
165 | textfield1.placeholder = "Username"
166 | textfield1.textAlignment = NSTextAlignment.center
167 | subview.addSubview(textfield1)
168 |
169 | // Add textfield 2
170 | let textfield2 = UITextField(frame: CGRect(x: x,y: textfield1.frame.maxY + 10,width: 180,height: 25))
171 | textfield2.isSecureTextEntry = true
172 | textfield2.layer.borderColor = UIColor.blue.cgColor
173 | textfield2.layer.borderWidth = 1.5
174 | textfield2.layer.cornerRadius = 5
175 | textfield1.layer.borderColor = UIColor.blue.cgColor
176 | textfield2.placeholder = "Password"
177 | textfield2.textAlignment = NSTextAlignment.center
178 | subview.addSubview(textfield2)
179 |
180 | // Add the subview to the alert's UI property
181 | alert.customSubview = subview
182 | _ = alert.addButton("Login") {
183 | print("Logged in")
184 | }
185 |
186 | // Add Button with visible timeout and custom Colors
187 | let showTimeout = SCLButton.ShowTimeoutConfiguration(prefix: "(", suffix: " s)")
188 | _ = alert.addButton("Timeout Button", backgroundColor: UIColor.brown, textColor: UIColor.yellow, showTimeout: showTimeout) {
189 | print("Timeout Button tapped")
190 | }
191 |
192 | let timeoutValue: TimeInterval = 10.0
193 | let timeoutAction: SCLAlertView.SCLTimeoutConfiguration.ActionType = {
194 | print("Timeout occurred")
195 | }
196 |
197 | _ = alert.showInfo("Login", subTitle: "", timeout: SCLAlertView.SCLTimeoutConfiguration(timeoutValue: timeoutValue, timeoutAction: timeoutAction))
198 | ```
199 |
200 |
201 | #### List of properties to customize
202 |
203 | ```swift
204 | // Button
205 | kButtonFont: UIFont
206 | buttonCornerRadius : CGFloat
207 | showCloseButton: Bool
208 | kButtonHeight: CGFloat
209 |
210 | // Circle Image
211 | showCircularIcon: Bool
212 | kCircleTopPosition: CGFloat
213 | kCircleBackgroundTopPosition: CGFloat
214 | kCircleHeight: CGFloat
215 | kCircleIconHeight: CGFloat
216 |
217 | // Text
218 | kTitleFont: UIFont
219 | kTitleTop:CGFloat
220 | kTitleHeight:CGFloat
221 | kTextFont: UIFont
222 | kTextHeight: CGFloat
223 | kTextFieldHeight: CGFloat
224 | kTextViewdHeight: CGFloat
225 |
226 | // View
227 | kDefaultShadowOpacity: CGFloat
228 | kWindowWidth: CGFloat
229 | kWindowHeight: CGFloat
230 | shouldAutoDismiss: Bool // Set this false to 'Disable' Auto hideView when SCLButton is tapped
231 | fieldCornerRadius : CGFloat
232 | contentViewCornerRadius : CGFloat
233 | disableTapGesture: Bool // set this to true if adding tableview to subView
234 | ```
235 |
236 |
237 | ### Alert View Styles
238 |
239 | ```swift
240 | enum SCLAlertViewStyle: Int {
241 | case success, error, notice, warning, info, edit, wait, question
242 | }
243 | ```
244 |
245 |
246 | ### Alert show animation Styles
247 |
248 | ```swift
249 | // Animation Styles
250 | public enum SCLAnimationStyle {
251 | case noAnimation, topToBottom, bottomToTop, leftToRight, rightToLeft
252 | }
253 | ```
254 |
255 |
256 | Installation
257 | ---
258 |
259 | SCLAlertView is available through
260 |
261 | ### [CocoaPods](http://cocoapods.org)
262 |
263 | To install add the following line to your Podfile:
264 |
265 | pod 'SCLAlertView'
266 |
267 | ### [Carthage](https://github.com/Carthage/Carthage)
268 |
269 | To install add the following line to your Cartfile:
270 |
271 | `github "vikmeup/SCLAlertView-Swift" "master"`
272 |
273 | Collaboration
274 | ---
275 |
276 | I tried to build an easy to use API, while beeing flexible enough for multiple variations, but I'm sure there are ways of improving and adding more features, so feel free to collaborate with ideas, issues and/or pull requests.
277 |
278 | Incoming improvements
279 | ---
280 |
281 | - More animations
282 | - Performance tests
283 |
284 | Has been developed initially for the [Scroll Feed](https://itunes.apple.com/us/app/scroll-feed/id842422195?ls=1&mt=8) app
285 |
286 | - Design [@SherzodMx](https://twitter.com/SherzodMx) Sherzod Max
287 | - Development [@vikmeup](https://twitter.com/vikmeup) Viktor Radchenko
288 | - Improvements by [@bih](http://github.com/bih) Bilawal Hameed, [@rizjoj](http://github.com/rizjoj) Riz Joj
289 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
80 |
89 |
98 |
107 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
32 |
41 |
50 |
59 |
68 |
77 |
86 |
93 |
100 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
--------------------------------------------------------------------------------
/SCLAlertView.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 70264F031B0F588800B32B18 /* SCLAlertView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70264EF71B0F588700B32B18 /* SCLAlertView.framework */; };
11 | 70264F141B0F58B400B32B18 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70264F131B0F58B400B32B18 /* UIKit.framework */; };
12 | 70264F161B0F58BE00B32B18 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70264F151B0F58BE00B32B18 /* Foundation.framework */; };
13 | 70264F181B0F592500B32B18 /* SCLAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70264F171B0F592500B32B18 /* SCLAlertView.swift */; };
14 | 9E124F1B1C9EA303001A4972 /* SCLAlertViewInitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E124F1A1C9EA303001A4972 /* SCLAlertViewInitTests.swift */; };
15 | 9E124F1D1C9EA6B5001A4972 /* SCLTextFieldTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E124F1C1C9EA6B5001A4972 /* SCLTextFieldTests.swift */; };
16 | 9E47417F1CA1DABE00F95B05 /* SCLButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E47417E1CA1DABE00F95B05 /* SCLButtonTests.swift */; };
17 | 9EAEFBC51CC2AA6600BA87FB /* SCLExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EAEFBC41CC2AA6600BA87FB /* SCLExtensions.swift */; };
18 | 9EE073151C9D7F4C002B43FD /* SCLAlertViewPropertiesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE073131C9D7F4C002B43FD /* SCLAlertViewPropertiesTests.swift */; };
19 | 9EE073161C9D7F4C002B43FD /* SCLAlertViewStyleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE073141C9D7F4C002B43FD /* SCLAlertViewStyleTests.swift */; };
20 | 9EE99F911CA6B2320090F845 /* SCLPublicConstructorsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EE99F901CA6B2320090F845 /* SCLPublicConstructorsTest.swift */; };
21 | /* End PBXBuildFile section */
22 |
23 | /* Begin PBXContainerItemProxy section */
24 | 70264F041B0F588800B32B18 /* PBXContainerItemProxy */ = {
25 | isa = PBXContainerItemProxy;
26 | containerPortal = 70264EEE1B0F588700B32B18 /* Project object */;
27 | proxyType = 1;
28 | remoteGlobalIDString = 70264EF61B0F588700B32B18;
29 | remoteInfo = SCLAlertView;
30 | };
31 | /* End PBXContainerItemProxy section */
32 |
33 | /* Begin PBXFileReference section */
34 | 70264EF71B0F588700B32B18 /* SCLAlertView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SCLAlertView.framework; sourceTree = BUILT_PRODUCTS_DIR; };
35 | 70264EFB1B0F588700B32B18 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
36 | 70264F021B0F588800B32B18 /* SCLAlertViewTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SCLAlertViewTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
37 | 70264F081B0F588800B32B18 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
38 | 70264F131B0F58B400B32B18 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
39 | 70264F151B0F58BE00B32B18 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
40 | 70264F171B0F592500B32B18 /* SCLAlertView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SCLAlertView.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
41 | 9E124F1A1C9EA303001A4972 /* SCLAlertViewInitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SCLAlertViewInitTests.swift; sourceTree = ""; };
42 | 9E124F1C1C9EA6B5001A4972 /* SCLTextFieldTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SCLTextFieldTests.swift; sourceTree = ""; };
43 | 9E47417E1CA1DABE00F95B05 /* SCLButtonTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SCLButtonTests.swift; sourceTree = ""; };
44 | 9EAEFBC41CC2AA6600BA87FB /* SCLExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SCLExtensions.swift; sourceTree = ""; };
45 | 9EE073131C9D7F4C002B43FD /* SCLAlertViewPropertiesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SCLAlertViewPropertiesTests.swift; sourceTree = ""; };
46 | 9EE073141C9D7F4C002B43FD /* SCLAlertViewStyleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SCLAlertViewStyleTests.swift; sourceTree = ""; };
47 | 9EE99F901CA6B2320090F845 /* SCLPublicConstructorsTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SCLPublicConstructorsTest.swift; sourceTree = ""; };
48 | /* End PBXFileReference section */
49 |
50 | /* Begin PBXFrameworksBuildPhase section */
51 | 70264EF31B0F588700B32B18 /* Frameworks */ = {
52 | isa = PBXFrameworksBuildPhase;
53 | buildActionMask = 2147483647;
54 | files = (
55 | 70264F161B0F58BE00B32B18 /* Foundation.framework in Frameworks */,
56 | 70264F141B0F58B400B32B18 /* UIKit.framework in Frameworks */,
57 | );
58 | runOnlyForDeploymentPostprocessing = 0;
59 | };
60 | 70264EFF1B0F588800B32B18 /* Frameworks */ = {
61 | isa = PBXFrameworksBuildPhase;
62 | buildActionMask = 2147483647;
63 | files = (
64 | 70264F031B0F588800B32B18 /* SCLAlertView.framework in Frameworks */,
65 | );
66 | runOnlyForDeploymentPostprocessing = 0;
67 | };
68 | /* End PBXFrameworksBuildPhase section */
69 |
70 | /* Begin PBXGroup section */
71 | 70264EED1B0F588700B32B18 = {
72 | isa = PBXGroup;
73 | children = (
74 | 70264F151B0F58BE00B32B18 /* Foundation.framework */,
75 | 70264F131B0F58B400B32B18 /* UIKit.framework */,
76 | 70264EF91B0F588700B32B18 /* SCLAlertView */,
77 | 70264F061B0F588800B32B18 /* SCLAlertViewTests */,
78 | 70264EF81B0F588700B32B18 /* Products */,
79 | );
80 | sourceTree = "";
81 | };
82 | 70264EF81B0F588700B32B18 /* Products */ = {
83 | isa = PBXGroup;
84 | children = (
85 | 70264EF71B0F588700B32B18 /* SCLAlertView.framework */,
86 | 70264F021B0F588800B32B18 /* SCLAlertViewTests.xctest */,
87 | );
88 | name = Products;
89 | sourceTree = "";
90 | };
91 | 70264EF91B0F588700B32B18 /* SCLAlertView */ = {
92 | isa = PBXGroup;
93 | children = (
94 | 70264F171B0F592500B32B18 /* SCLAlertView.swift */,
95 | 9EAEFBC41CC2AA6600BA87FB /* SCLExtensions.swift */,
96 | 70264EFA1B0F588700B32B18 /* Supporting Files */,
97 | );
98 | path = SCLAlertView;
99 | sourceTree = "";
100 | };
101 | 70264EFA1B0F588700B32B18 /* Supporting Files */ = {
102 | isa = PBXGroup;
103 | children = (
104 | 70264EFB1B0F588700B32B18 /* Info.plist */,
105 | );
106 | name = "Supporting Files";
107 | sourceTree = "";
108 | };
109 | 70264F061B0F588800B32B18 /* SCLAlertViewTests */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 9EE073131C9D7F4C002B43FD /* SCLAlertViewPropertiesTests.swift */,
113 | 9E124F1A1C9EA303001A4972 /* SCLAlertViewInitTests.swift */,
114 | 9EE073141C9D7F4C002B43FD /* SCLAlertViewStyleTests.swift */,
115 | 9E124F1C1C9EA6B5001A4972 /* SCLTextFieldTests.swift */,
116 | 9E47417E1CA1DABE00F95B05 /* SCLButtonTests.swift */,
117 | 9EE99F901CA6B2320090F845 /* SCLPublicConstructorsTest.swift */,
118 | 70264F071B0F588800B32B18 /* Supporting Files */,
119 | );
120 | path = SCLAlertViewTests;
121 | sourceTree = "";
122 | };
123 | 70264F071B0F588800B32B18 /* Supporting Files */ = {
124 | isa = PBXGroup;
125 | children = (
126 | 70264F081B0F588800B32B18 /* Info.plist */,
127 | );
128 | name = "Supporting Files";
129 | sourceTree = "";
130 | };
131 | /* End PBXGroup section */
132 |
133 | /* Begin PBXHeadersBuildPhase section */
134 | 70264EF41B0F588700B32B18 /* Headers */ = {
135 | isa = PBXHeadersBuildPhase;
136 | buildActionMask = 2147483647;
137 | files = (
138 | );
139 | runOnlyForDeploymentPostprocessing = 0;
140 | };
141 | /* End PBXHeadersBuildPhase section */
142 |
143 | /* Begin PBXNativeTarget section */
144 | 70264EF61B0F588700B32B18 /* SCLAlertView */ = {
145 | isa = PBXNativeTarget;
146 | buildConfigurationList = 70264F0D1B0F588800B32B18 /* Build configuration list for PBXNativeTarget "SCLAlertView" */;
147 | buildPhases = (
148 | 70264EF21B0F588700B32B18 /* Sources */,
149 | 70264EF31B0F588700B32B18 /* Frameworks */,
150 | 70264EF41B0F588700B32B18 /* Headers */,
151 | 70264EF51B0F588700B32B18 /* Resources */,
152 | );
153 | buildRules = (
154 | );
155 | dependencies = (
156 | );
157 | name = SCLAlertView;
158 | productName = SCLAlertView;
159 | productReference = 70264EF71B0F588700B32B18 /* SCLAlertView.framework */;
160 | productType = "com.apple.product-type.framework";
161 | };
162 | 70264F011B0F588800B32B18 /* SCLAlertViewTests */ = {
163 | isa = PBXNativeTarget;
164 | buildConfigurationList = 70264F101B0F588800B32B18 /* Build configuration list for PBXNativeTarget "SCLAlertViewTests" */;
165 | buildPhases = (
166 | 70264EFE1B0F588800B32B18 /* Sources */,
167 | 70264EFF1B0F588800B32B18 /* Frameworks */,
168 | 70264F001B0F588800B32B18 /* Resources */,
169 | );
170 | buildRules = (
171 | );
172 | dependencies = (
173 | 70264F051B0F588800B32B18 /* PBXTargetDependency */,
174 | );
175 | name = SCLAlertViewTests;
176 | productName = SCLAlertViewTests;
177 | productReference = 70264F021B0F588800B32B18 /* SCLAlertViewTests.xctest */;
178 | productType = "com.apple.product-type.bundle.unit-test";
179 | };
180 | /* End PBXNativeTarget section */
181 |
182 | /* Begin PBXProject section */
183 | 70264EEE1B0F588700B32B18 /* Project object */ = {
184 | isa = PBXProject;
185 | attributes = {
186 | LastSwiftMigration = 0700;
187 | LastSwiftUpdateCheck = 0700;
188 | LastUpgradeCheck = 1020;
189 | ORGANIZATIONNAME = "Alexey Poimtsev";
190 | TargetAttributes = {
191 | 70264EF61B0F588700B32B18 = {
192 | CreatedOnToolsVersion = 6.3.2;
193 | LastSwiftMigration = 1020;
194 | };
195 | 70264F011B0F588800B32B18 = {
196 | CreatedOnToolsVersion = 6.3.2;
197 | LastSwiftMigration = 1010;
198 | };
199 | };
200 | };
201 | buildConfigurationList = 70264EF11B0F588700B32B18 /* Build configuration list for PBXProject "SCLAlertView" */;
202 | compatibilityVersion = "Xcode 3.2";
203 | developmentRegion = en;
204 | hasScannedForEncodings = 0;
205 | knownRegions = (
206 | en,
207 | Base,
208 | );
209 | mainGroup = 70264EED1B0F588700B32B18;
210 | productRefGroup = 70264EF81B0F588700B32B18 /* Products */;
211 | projectDirPath = "";
212 | projectRoot = "";
213 | targets = (
214 | 70264EF61B0F588700B32B18 /* SCLAlertView */,
215 | 70264F011B0F588800B32B18 /* SCLAlertViewTests */,
216 | );
217 | };
218 | /* End PBXProject section */
219 |
220 | /* Begin PBXResourcesBuildPhase section */
221 | 70264EF51B0F588700B32B18 /* Resources */ = {
222 | isa = PBXResourcesBuildPhase;
223 | buildActionMask = 2147483647;
224 | files = (
225 | );
226 | runOnlyForDeploymentPostprocessing = 0;
227 | };
228 | 70264F001B0F588800B32B18 /* Resources */ = {
229 | isa = PBXResourcesBuildPhase;
230 | buildActionMask = 2147483647;
231 | files = (
232 | );
233 | runOnlyForDeploymentPostprocessing = 0;
234 | };
235 | /* End PBXResourcesBuildPhase section */
236 |
237 | /* Begin PBXSourcesBuildPhase section */
238 | 70264EF21B0F588700B32B18 /* Sources */ = {
239 | isa = PBXSourcesBuildPhase;
240 | buildActionMask = 2147483647;
241 | files = (
242 | 9EAEFBC51CC2AA6600BA87FB /* SCLExtensions.swift in Sources */,
243 | 70264F181B0F592500B32B18 /* SCLAlertView.swift in Sources */,
244 | );
245 | runOnlyForDeploymentPostprocessing = 0;
246 | };
247 | 70264EFE1B0F588800B32B18 /* Sources */ = {
248 | isa = PBXSourcesBuildPhase;
249 | buildActionMask = 2147483647;
250 | files = (
251 | 9E47417F1CA1DABE00F95B05 /* SCLButtonTests.swift in Sources */,
252 | 9EE073151C9D7F4C002B43FD /* SCLAlertViewPropertiesTests.swift in Sources */,
253 | 9EE99F911CA6B2320090F845 /* SCLPublicConstructorsTest.swift in Sources */,
254 | 9EE073161C9D7F4C002B43FD /* SCLAlertViewStyleTests.swift in Sources */,
255 | 9E124F1D1C9EA6B5001A4972 /* SCLTextFieldTests.swift in Sources */,
256 | 9E124F1B1C9EA303001A4972 /* SCLAlertViewInitTests.swift in Sources */,
257 | );
258 | runOnlyForDeploymentPostprocessing = 0;
259 | };
260 | /* End PBXSourcesBuildPhase section */
261 |
262 | /* Begin PBXTargetDependency section */
263 | 70264F051B0F588800B32B18 /* PBXTargetDependency */ = {
264 | isa = PBXTargetDependency;
265 | target = 70264EF61B0F588700B32B18 /* SCLAlertView */;
266 | targetProxy = 70264F041B0F588800B32B18 /* PBXContainerItemProxy */;
267 | };
268 | /* End PBXTargetDependency section */
269 |
270 | /* Begin XCBuildConfiguration section */
271 | 70264F0B1B0F588800B32B18 /* Debug */ = {
272 | isa = XCBuildConfiguration;
273 | buildSettings = {
274 | ALWAYS_SEARCH_USER_PATHS = NO;
275 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
276 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
277 | CLANG_CXX_LIBRARY = "libc++";
278 | CLANG_ENABLE_MODULES = YES;
279 | CLANG_ENABLE_OBJC_ARC = YES;
280 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
281 | CLANG_WARN_BOOL_CONVERSION = YES;
282 | CLANG_WARN_COMMA = YES;
283 | CLANG_WARN_CONSTANT_CONVERSION = YES;
284 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
285 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
286 | CLANG_WARN_EMPTY_BODY = YES;
287 | CLANG_WARN_ENUM_CONVERSION = YES;
288 | CLANG_WARN_INFINITE_RECURSION = YES;
289 | CLANG_WARN_INT_CONVERSION = YES;
290 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
291 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
292 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
293 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
294 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
295 | CLANG_WARN_STRICT_PROTOTYPES = YES;
296 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
297 | CLANG_WARN_UNREACHABLE_CODE = YES;
298 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
299 | COPY_PHASE_STRIP = NO;
300 | CURRENT_PROJECT_VERSION = 1;
301 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
302 | ENABLE_STRICT_OBJC_MSGSEND = YES;
303 | ENABLE_TESTABILITY = YES;
304 | GCC_C_LANGUAGE_STANDARD = gnu99;
305 | GCC_DYNAMIC_NO_PIC = NO;
306 | GCC_NO_COMMON_BLOCKS = YES;
307 | GCC_OPTIMIZATION_LEVEL = 0;
308 | GCC_PREPROCESSOR_DEFINITIONS = (
309 | "DEBUG=1",
310 | "$(inherited)",
311 | );
312 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
313 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
314 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
315 | GCC_WARN_UNDECLARED_SELECTOR = YES;
316 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
317 | GCC_WARN_UNUSED_FUNCTION = YES;
318 | GCC_WARN_UNUSED_VARIABLE = YES;
319 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
320 | MTL_ENABLE_DEBUG_INFO = YES;
321 | ONLY_ACTIVE_ARCH = YES;
322 | SDKROOT = iphoneos;
323 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
324 | TARGETED_DEVICE_FAMILY = "1,2";
325 | VERSIONING_SYSTEM = "apple-generic";
326 | VERSION_INFO_PREFIX = "";
327 | };
328 | name = Debug;
329 | };
330 | 70264F0C1B0F588800B32B18 /* Release */ = {
331 | isa = XCBuildConfiguration;
332 | buildSettings = {
333 | ALWAYS_SEARCH_USER_PATHS = NO;
334 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
335 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
336 | CLANG_CXX_LIBRARY = "libc++";
337 | CLANG_ENABLE_MODULES = YES;
338 | CLANG_ENABLE_OBJC_ARC = YES;
339 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
340 | CLANG_WARN_BOOL_CONVERSION = YES;
341 | CLANG_WARN_COMMA = YES;
342 | CLANG_WARN_CONSTANT_CONVERSION = YES;
343 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
344 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
345 | CLANG_WARN_EMPTY_BODY = YES;
346 | CLANG_WARN_ENUM_CONVERSION = YES;
347 | CLANG_WARN_INFINITE_RECURSION = YES;
348 | CLANG_WARN_INT_CONVERSION = YES;
349 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
350 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
351 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
352 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
353 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
354 | CLANG_WARN_STRICT_PROTOTYPES = YES;
355 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
356 | CLANG_WARN_UNREACHABLE_CODE = YES;
357 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
358 | COPY_PHASE_STRIP = NO;
359 | CURRENT_PROJECT_VERSION = 1;
360 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
361 | ENABLE_NS_ASSERTIONS = NO;
362 | ENABLE_STRICT_OBJC_MSGSEND = YES;
363 | GCC_C_LANGUAGE_STANDARD = gnu99;
364 | GCC_NO_COMMON_BLOCKS = YES;
365 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
366 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
367 | GCC_WARN_UNDECLARED_SELECTOR = YES;
368 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
369 | GCC_WARN_UNUSED_FUNCTION = YES;
370 | GCC_WARN_UNUSED_VARIABLE = YES;
371 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
372 | MTL_ENABLE_DEBUG_INFO = NO;
373 | SDKROOT = iphoneos;
374 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
375 | TARGETED_DEVICE_FAMILY = "1,2";
376 | VALIDATE_PRODUCT = YES;
377 | VERSIONING_SYSTEM = "apple-generic";
378 | VERSION_INFO_PREFIX = "";
379 | };
380 | name = Release;
381 | };
382 | 70264F0E1B0F588800B32B18 /* Debug */ = {
383 | isa = XCBuildConfiguration;
384 | buildSettings = {
385 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
386 | DEFINES_MODULE = YES;
387 | DYLIB_COMPATIBILITY_VERSION = 1;
388 | DYLIB_CURRENT_VERSION = 1;
389 | DYLIB_INSTALL_NAME_BASE = "@rpath";
390 | ENABLE_BITCODE = YES;
391 | ENABLE_TESTABILITY = YES;
392 | INFOPLIST_FILE = SCLAlertView/Info.plist;
393 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
394 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
395 | LD_RUNPATH_SEARCH_PATHS = "";
396 | PRODUCT_BUNDLE_IDENTIFIER = "com.alec-c4.$(PRODUCT_NAME:rfc1034identifier)";
397 | PRODUCT_NAME = "$(TARGET_NAME)";
398 | SKIP_INSTALL = YES;
399 | SWIFT_VERSION = 5.0;
400 | };
401 | name = Debug;
402 | };
403 | 70264F0F1B0F588800B32B18 /* Release */ = {
404 | isa = XCBuildConfiguration;
405 | buildSettings = {
406 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
407 | DEFINES_MODULE = YES;
408 | DYLIB_COMPATIBILITY_VERSION = 1;
409 | DYLIB_CURRENT_VERSION = 1;
410 | DYLIB_INSTALL_NAME_BASE = "@rpath";
411 | ENABLE_BITCODE = YES;
412 | ENABLE_TESTABILITY = YES;
413 | INFOPLIST_FILE = SCLAlertView/Info.plist;
414 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
415 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
416 | LD_RUNPATH_SEARCH_PATHS = "";
417 | PRODUCT_BUNDLE_IDENTIFIER = "com.alec-c4.$(PRODUCT_NAME:rfc1034identifier)";
418 | PRODUCT_NAME = "$(TARGET_NAME)";
419 | SKIP_INSTALL = YES;
420 | SWIFT_VERSION = 5.0;
421 | };
422 | name = Release;
423 | };
424 | 70264F111B0F588800B32B18 /* Debug */ = {
425 | isa = XCBuildConfiguration;
426 | buildSettings = {
427 | FRAMEWORK_SEARCH_PATHS = "";
428 | GCC_PREPROCESSOR_DEFINITIONS = (
429 | "DEBUG=1",
430 | "$(inherited)",
431 | );
432 | INFOPLIST_FILE = SCLAlertViewTests/Info.plist;
433 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
434 | LD_RUNPATH_SEARCH_PATHS = "";
435 | PRODUCT_BUNDLE_IDENTIFIER = "com.alec-c4.$(PRODUCT_NAME:rfc1034identifier)";
436 | PRODUCT_NAME = "$(TARGET_NAME)";
437 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
438 | SWIFT_VERSION = 4.2;
439 | };
440 | name = Debug;
441 | };
442 | 70264F121B0F588800B32B18 /* Release */ = {
443 | isa = XCBuildConfiguration;
444 | buildSettings = {
445 | FRAMEWORK_SEARCH_PATHS = "";
446 | INFOPLIST_FILE = SCLAlertViewTests/Info.plist;
447 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
448 | LD_RUNPATH_SEARCH_PATHS = "";
449 | PRODUCT_BUNDLE_IDENTIFIER = "com.alec-c4.$(PRODUCT_NAME:rfc1034identifier)";
450 | PRODUCT_NAME = "$(TARGET_NAME)";
451 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
452 | SWIFT_VERSION = 4.2;
453 | };
454 | name = Release;
455 | };
456 | /* End XCBuildConfiguration section */
457 |
458 | /* Begin XCConfigurationList section */
459 | 70264EF11B0F588700B32B18 /* Build configuration list for PBXProject "SCLAlertView" */ = {
460 | isa = XCConfigurationList;
461 | buildConfigurations = (
462 | 70264F0B1B0F588800B32B18 /* Debug */,
463 | 70264F0C1B0F588800B32B18 /* Release */,
464 | );
465 | defaultConfigurationIsVisible = 0;
466 | defaultConfigurationName = Release;
467 | };
468 | 70264F0D1B0F588800B32B18 /* Build configuration list for PBXNativeTarget "SCLAlertView" */ = {
469 | isa = XCConfigurationList;
470 | buildConfigurations = (
471 | 70264F0E1B0F588800B32B18 /* Debug */,
472 | 70264F0F1B0F588800B32B18 /* Release */,
473 | );
474 | defaultConfigurationIsVisible = 0;
475 | defaultConfigurationName = Release;
476 | };
477 | 70264F101B0F588800B32B18 /* Build configuration list for PBXNativeTarget "SCLAlertViewTests" */ = {
478 | isa = XCConfigurationList;
479 | buildConfigurations = (
480 | 70264F111B0F588800B32B18 /* Debug */,
481 | 70264F121B0F588800B32B18 /* Release */,
482 | );
483 | defaultConfigurationIsVisible = 0;
484 | defaultConfigurationName = Release;
485 | };
486 | /* End XCConfigurationList section */
487 | };
488 | rootObject = 70264EEE1B0F588700B32B18 /* Project object */;
489 | }
490 |
--------------------------------------------------------------------------------
/Example/SCLAlertViewExample.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 54;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 34C14E081C8F3BA500F4BF18 /* SCLAlertView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34C14E031C8F3B6800F4BF18 /* SCLAlertView.framework */; };
11 | 34C14E091C8F3BA500F4BF18 /* SCLAlertView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 34C14E031C8F3B6800F4BF18 /* SCLAlertView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
12 | CEABB2471942AD9700FCB13C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEABB2461942AD9700FCB13C /* AppDelegate.swift */; };
13 | CEABB2501942AD9700FCB13C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CEABB24F1942AD9700FCB13C /* Images.xcassets */; };
14 | CEABB2671942AEA500FCB13C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEABB2661942AEA500FCB13C /* ViewController.swift */; };
15 | CEB569971942AE47009959CC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CEB569961942AE47009959CC /* Main.storyboard */; };
16 | F5B41A1E235F456600DE0C87 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F5B41A1D235F456600DE0C87 /* Launch Screen.storyboard */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXContainerItemProxy section */
20 | 34C14E021C8F3B6800F4BF18 /* PBXContainerItemProxy */ = {
21 | isa = PBXContainerItemProxy;
22 | containerPortal = 34C14DFD1C8F3B6800F4BF18 /* SCLAlertView.xcodeproj */;
23 | proxyType = 2;
24 | remoteGlobalIDString = 70264EF71B0F588700B32B18;
25 | remoteInfo = SCLAlertView;
26 | };
27 | 34C14E041C8F3B6800F4BF18 /* PBXContainerItemProxy */ = {
28 | isa = PBXContainerItemProxy;
29 | containerPortal = 34C14DFD1C8F3B6800F4BF18 /* SCLAlertView.xcodeproj */;
30 | proxyType = 2;
31 | remoteGlobalIDString = 70264F021B0F588800B32B18;
32 | remoteInfo = SCLAlertViewTests;
33 | };
34 | 34C14E061C8F3B8800F4BF18 /* PBXContainerItemProxy */ = {
35 | isa = PBXContainerItemProxy;
36 | containerPortal = 34C14DFD1C8F3B6800F4BF18 /* SCLAlertView.xcodeproj */;
37 | proxyType = 1;
38 | remoteGlobalIDString = 70264EF61B0F588700B32B18;
39 | remoteInfo = SCLAlertView;
40 | };
41 | 34C14E0A1C8F3BA500F4BF18 /* PBXContainerItemProxy */ = {
42 | isa = PBXContainerItemProxy;
43 | containerPortal = 34C14DFD1C8F3B6800F4BF18 /* SCLAlertView.xcodeproj */;
44 | proxyType = 1;
45 | remoteGlobalIDString = 70264EF61B0F588700B32B18;
46 | remoteInfo = SCLAlertView;
47 | };
48 | CEABB2561942AD9700FCB13C /* PBXContainerItemProxy */ = {
49 | isa = PBXContainerItemProxy;
50 | containerPortal = CEABB2391942AD9700FCB13C /* Project object */;
51 | proxyType = 1;
52 | remoteGlobalIDString = CEABB2401942AD9700FCB13C;
53 | remoteInfo = SCLAlertViewExample;
54 | };
55 | /* End PBXContainerItemProxy section */
56 |
57 | /* Begin PBXCopyFilesBuildPhase section */
58 | 34C14E0C1C8F3BA500F4BF18 /* Embed Frameworks */ = {
59 | isa = PBXCopyFilesBuildPhase;
60 | buildActionMask = 2147483647;
61 | dstPath = "";
62 | dstSubfolderSpec = 10;
63 | files = (
64 | 34C14E091C8F3BA500F4BF18 /* SCLAlertView.framework in Embed Frameworks */,
65 | );
66 | name = "Embed Frameworks";
67 | runOnlyForDeploymentPostprocessing = 0;
68 | };
69 | /* End PBXCopyFilesBuildPhase section */
70 |
71 | /* Begin PBXFileReference section */
72 | 34C14DFD1C8F3B6800F4BF18 /* SCLAlertView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SCLAlertView.xcodeproj; path = ../SCLAlertView.xcodeproj; sourceTree = ""; };
73 | CEABB2411942AD9700FCB13C /* SCLAlertViewExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SCLAlertViewExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
74 | CEABB2451942AD9700FCB13C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
75 | CEABB2461942AD9700FCB13C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
76 | CEABB24F1942AD9700FCB13C /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
77 | CEABB2551942AD9700FCB13C /* SCLAlertViewExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SCLAlertViewExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
78 | CEABB25A1942AD9700FCB13C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
79 | CEABB2661942AEA500FCB13C /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
80 | CEB569961942AE47009959CC /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; };
81 | F5B41A1D235F456600DE0C87 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = ""; };
82 | /* End PBXFileReference section */
83 |
84 | /* Begin PBXFrameworksBuildPhase section */
85 | CEABB23E1942AD9700FCB13C /* Frameworks */ = {
86 | isa = PBXFrameworksBuildPhase;
87 | buildActionMask = 2147483647;
88 | files = (
89 | 34C14E081C8F3BA500F4BF18 /* SCLAlertView.framework in Frameworks */,
90 | );
91 | runOnlyForDeploymentPostprocessing = 0;
92 | };
93 | CEABB2521942AD9700FCB13C /* Frameworks */ = {
94 | isa = PBXFrameworksBuildPhase;
95 | buildActionMask = 2147483647;
96 | files = (
97 | );
98 | runOnlyForDeploymentPostprocessing = 0;
99 | };
100 | /* End PBXFrameworksBuildPhase section */
101 |
102 | /* Begin PBXGroup section */
103 | 34C14DFE1C8F3B6800F4BF18 /* Products */ = {
104 | isa = PBXGroup;
105 | children = (
106 | 34C14E031C8F3B6800F4BF18 /* SCLAlertView.framework */,
107 | 34C14E051C8F3B6800F4BF18 /* SCLAlertViewTests.xctest */,
108 | );
109 | name = Products;
110 | sourceTree = "";
111 | };
112 | CEABB2381942AD9700FCB13C = {
113 | isa = PBXGroup;
114 | children = (
115 | 34C14DFD1C8F3B6800F4BF18 /* SCLAlertView.xcodeproj */,
116 | CEABB2431942AD9700FCB13C /* SCLAlertViewExample */,
117 | CEABB2581942AD9700FCB13C /* SCLAlertViewExampleTests */,
118 | CEABB2421942AD9700FCB13C /* Products */,
119 | );
120 | sourceTree = "";
121 | };
122 | CEABB2421942AD9700FCB13C /* Products */ = {
123 | isa = PBXGroup;
124 | children = (
125 | CEABB2411942AD9700FCB13C /* SCLAlertViewExample.app */,
126 | CEABB2551942AD9700FCB13C /* SCLAlertViewExampleTests.xctest */,
127 | );
128 | name = Products;
129 | sourceTree = "";
130 | };
131 | CEABB2431942AD9700FCB13C /* SCLAlertViewExample */ = {
132 | isa = PBXGroup;
133 | children = (
134 | CEABB2441942AD9700FCB13C /* Supporting Files */,
135 | CEABB24F1942AD9700FCB13C /* Images.xcassets */,
136 | CEB569961942AE47009959CC /* Main.storyboard */,
137 | CEABB2461942AD9700FCB13C /* AppDelegate.swift */,
138 | CEABB2661942AEA500FCB13C /* ViewController.swift */,
139 | F5B41A1D235F456600DE0C87 /* Launch Screen.storyboard */,
140 | );
141 | path = SCLAlertViewExample;
142 | sourceTree = "";
143 | };
144 | CEABB2441942AD9700FCB13C /* Supporting Files */ = {
145 | isa = PBXGroup;
146 | children = (
147 | CEABB2451942AD9700FCB13C /* Info.plist */,
148 | );
149 | name = "Supporting Files";
150 | sourceTree = "";
151 | };
152 | CEABB2581942AD9700FCB13C /* SCLAlertViewExampleTests */ = {
153 | isa = PBXGroup;
154 | children = (
155 | CEABB2591942AD9700FCB13C /* Supporting Files */,
156 | );
157 | path = SCLAlertViewExampleTests;
158 | sourceTree = "";
159 | };
160 | CEABB2591942AD9700FCB13C /* Supporting Files */ = {
161 | isa = PBXGroup;
162 | children = (
163 | CEABB25A1942AD9700FCB13C /* Info.plist */,
164 | );
165 | name = "Supporting Files";
166 | sourceTree = "";
167 | };
168 | /* End PBXGroup section */
169 |
170 | /* Begin PBXNativeTarget section */
171 | CEABB2401942AD9700FCB13C /* SCLAlertViewExample */ = {
172 | isa = PBXNativeTarget;
173 | buildConfigurationList = CEABB25F1942AD9700FCB13C /* Build configuration list for PBXNativeTarget "SCLAlertViewExample" */;
174 | buildPhases = (
175 | CEABB23D1942AD9700FCB13C /* Sources */,
176 | CEABB23E1942AD9700FCB13C /* Frameworks */,
177 | CEABB23F1942AD9700FCB13C /* Resources */,
178 | 34C14E0C1C8F3BA500F4BF18 /* Embed Frameworks */,
179 | );
180 | buildRules = (
181 | );
182 | dependencies = (
183 | 34C14E071C8F3B8800F4BF18 /* PBXTargetDependency */,
184 | 34C14E0B1C8F3BA500F4BF18 /* PBXTargetDependency */,
185 | );
186 | name = SCLAlertViewExample;
187 | productName = SCLAlertViewExample;
188 | productReference = CEABB2411942AD9700FCB13C /* SCLAlertViewExample.app */;
189 | productType = "com.apple.product-type.application";
190 | };
191 | CEABB2541942AD9700FCB13C /* SCLAlertViewExampleTests */ = {
192 | isa = PBXNativeTarget;
193 | buildConfigurationList = CEABB2621942AD9700FCB13C /* Build configuration list for PBXNativeTarget "SCLAlertViewExampleTests" */;
194 | buildPhases = (
195 | CEABB2511942AD9700FCB13C /* Sources */,
196 | CEABB2521942AD9700FCB13C /* Frameworks */,
197 | CEABB2531942AD9700FCB13C /* Resources */,
198 | );
199 | buildRules = (
200 | );
201 | dependencies = (
202 | CEABB2571942AD9700FCB13C /* PBXTargetDependency */,
203 | );
204 | name = SCLAlertViewExampleTests;
205 | productName = SCLAlertViewExampleTests;
206 | productReference = CEABB2551942AD9700FCB13C /* SCLAlertViewExampleTests.xctest */;
207 | productType = "com.apple.product-type.bundle.unit-test";
208 | };
209 | /* End PBXNativeTarget section */
210 |
211 | /* Begin PBXProject section */
212 | CEABB2391942AD9700FCB13C /* Project object */ = {
213 | isa = PBXProject;
214 | attributes = {
215 | LastSwiftMigration = 0700;
216 | LastSwiftUpdateCheck = 0700;
217 | LastUpgradeCheck = 1200;
218 | ORGANIZATIONNAME = "Viktor Radchenko";
219 | TargetAttributes = {
220 | CEABB2401942AD9700FCB13C = {
221 | CreatedOnToolsVersion = 6.0;
222 | LastSwiftMigration = 1020;
223 | };
224 | CEABB2541942AD9700FCB13C = {
225 | CreatedOnToolsVersion = 6.0;
226 | TestTargetID = CEABB2401942AD9700FCB13C;
227 | };
228 | };
229 | };
230 | buildConfigurationList = CEABB23C1942AD9700FCB13C /* Build configuration list for PBXProject "SCLAlertViewExample" */;
231 | compatibilityVersion = "Xcode 12.0";
232 | developmentRegion = en;
233 | hasScannedForEncodings = 0;
234 | knownRegions = (
235 | en,
236 | Base,
237 | );
238 | mainGroup = CEABB2381942AD9700FCB13C;
239 | productRefGroup = CEABB2421942AD9700FCB13C /* Products */;
240 | projectDirPath = "";
241 | projectReferences = (
242 | {
243 | ProductGroup = 34C14DFE1C8F3B6800F4BF18 /* Products */;
244 | ProjectRef = 34C14DFD1C8F3B6800F4BF18 /* SCLAlertView.xcodeproj */;
245 | },
246 | );
247 | projectRoot = "";
248 | targets = (
249 | CEABB2401942AD9700FCB13C /* SCLAlertViewExample */,
250 | CEABB2541942AD9700FCB13C /* SCLAlertViewExampleTests */,
251 | );
252 | };
253 | /* End PBXProject section */
254 |
255 | /* Begin PBXReferenceProxy section */
256 | 34C14E031C8F3B6800F4BF18 /* SCLAlertView.framework */ = {
257 | isa = PBXReferenceProxy;
258 | fileType = wrapper.framework;
259 | path = SCLAlertView.framework;
260 | remoteRef = 34C14E021C8F3B6800F4BF18 /* PBXContainerItemProxy */;
261 | sourceTree = BUILT_PRODUCTS_DIR;
262 | };
263 | 34C14E051C8F3B6800F4BF18 /* SCLAlertViewTests.xctest */ = {
264 | isa = PBXReferenceProxy;
265 | fileType = wrapper.cfbundle;
266 | path = SCLAlertViewTests.xctest;
267 | remoteRef = 34C14E041C8F3B6800F4BF18 /* PBXContainerItemProxy */;
268 | sourceTree = BUILT_PRODUCTS_DIR;
269 | };
270 | /* End PBXReferenceProxy section */
271 |
272 | /* Begin PBXResourcesBuildPhase section */
273 | CEABB23F1942AD9700FCB13C /* Resources */ = {
274 | isa = PBXResourcesBuildPhase;
275 | buildActionMask = 2147483647;
276 | files = (
277 | CEB569971942AE47009959CC /* Main.storyboard in Resources */,
278 | CEABB2501942AD9700FCB13C /* Images.xcassets in Resources */,
279 | F5B41A1E235F456600DE0C87 /* Launch Screen.storyboard in Resources */,
280 | );
281 | runOnlyForDeploymentPostprocessing = 0;
282 | };
283 | CEABB2531942AD9700FCB13C /* Resources */ = {
284 | isa = PBXResourcesBuildPhase;
285 | buildActionMask = 2147483647;
286 | files = (
287 | );
288 | runOnlyForDeploymentPostprocessing = 0;
289 | };
290 | /* End PBXResourcesBuildPhase section */
291 |
292 | /* Begin PBXSourcesBuildPhase section */
293 | CEABB23D1942AD9700FCB13C /* Sources */ = {
294 | isa = PBXSourcesBuildPhase;
295 | buildActionMask = 2147483647;
296 | files = (
297 | CEABB2671942AEA500FCB13C /* ViewController.swift in Sources */,
298 | CEABB2471942AD9700FCB13C /* AppDelegate.swift in Sources */,
299 | );
300 | runOnlyForDeploymentPostprocessing = 0;
301 | };
302 | CEABB2511942AD9700FCB13C /* Sources */ = {
303 | isa = PBXSourcesBuildPhase;
304 | buildActionMask = 2147483647;
305 | files = (
306 | );
307 | runOnlyForDeploymentPostprocessing = 0;
308 | };
309 | /* End PBXSourcesBuildPhase section */
310 |
311 | /* Begin PBXTargetDependency section */
312 | 34C14E071C8F3B8800F4BF18 /* PBXTargetDependency */ = {
313 | isa = PBXTargetDependency;
314 | name = SCLAlertView;
315 | targetProxy = 34C14E061C8F3B8800F4BF18 /* PBXContainerItemProxy */;
316 | };
317 | 34C14E0B1C8F3BA500F4BF18 /* PBXTargetDependency */ = {
318 | isa = PBXTargetDependency;
319 | name = SCLAlertView;
320 | targetProxy = 34C14E0A1C8F3BA500F4BF18 /* PBXContainerItemProxy */;
321 | };
322 | CEABB2571942AD9700FCB13C /* PBXTargetDependency */ = {
323 | isa = PBXTargetDependency;
324 | target = CEABB2401942AD9700FCB13C /* SCLAlertViewExample */;
325 | targetProxy = CEABB2561942AD9700FCB13C /* PBXContainerItemProxy */;
326 | };
327 | /* End PBXTargetDependency section */
328 |
329 | /* Begin XCBuildConfiguration section */
330 | CEABB25D1942AD9700FCB13C /* Debug */ = {
331 | isa = XCBuildConfiguration;
332 | buildSettings = {
333 | ALWAYS_SEARCH_USER_PATHS = NO;
334 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
335 | CLANG_CXX_LIBRARY = "libc++";
336 | CLANG_ENABLE_MODULES = YES;
337 | CLANG_ENABLE_OBJC_ARC = YES;
338 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
339 | CLANG_WARN_BOOL_CONVERSION = YES;
340 | CLANG_WARN_COMMA = YES;
341 | CLANG_WARN_CONSTANT_CONVERSION = YES;
342 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
343 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
344 | CLANG_WARN_EMPTY_BODY = YES;
345 | CLANG_WARN_ENUM_CONVERSION = YES;
346 | CLANG_WARN_INFINITE_RECURSION = YES;
347 | CLANG_WARN_INT_CONVERSION = YES;
348 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
349 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
350 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
351 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
352 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
353 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
354 | CLANG_WARN_STRICT_PROTOTYPES = YES;
355 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
356 | CLANG_WARN_UNREACHABLE_CODE = YES;
357 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
358 | COPY_PHASE_STRIP = NO;
359 | ENABLE_STRICT_OBJC_MSGSEND = YES;
360 | ENABLE_TESTABILITY = YES;
361 | GCC_C_LANGUAGE_STANDARD = gnu99;
362 | GCC_DYNAMIC_NO_PIC = NO;
363 | GCC_NO_COMMON_BLOCKS = YES;
364 | GCC_OPTIMIZATION_LEVEL = 0;
365 | GCC_PREPROCESSOR_DEFINITIONS = (
366 | "DEBUG=1",
367 | "$(inherited)",
368 | );
369 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
370 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
371 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
372 | GCC_WARN_UNDECLARED_SELECTOR = YES;
373 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
374 | GCC_WARN_UNUSED_FUNCTION = YES;
375 | GCC_WARN_UNUSED_VARIABLE = YES;
376 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
377 | METAL_ENABLE_DEBUG_INFO = YES;
378 | ONLY_ACTIVE_ARCH = YES;
379 | SDKROOT = iphoneos;
380 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
381 | };
382 | name = Debug;
383 | };
384 | CEABB25E1942AD9700FCB13C /* Release */ = {
385 | isa = XCBuildConfiguration;
386 | buildSettings = {
387 | ALWAYS_SEARCH_USER_PATHS = NO;
388 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
389 | CLANG_CXX_LIBRARY = "libc++";
390 | CLANG_ENABLE_MODULES = YES;
391 | CLANG_ENABLE_OBJC_ARC = YES;
392 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
393 | CLANG_WARN_BOOL_CONVERSION = YES;
394 | CLANG_WARN_COMMA = YES;
395 | CLANG_WARN_CONSTANT_CONVERSION = YES;
396 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
397 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
398 | CLANG_WARN_EMPTY_BODY = YES;
399 | CLANG_WARN_ENUM_CONVERSION = YES;
400 | CLANG_WARN_INFINITE_RECURSION = YES;
401 | CLANG_WARN_INT_CONVERSION = YES;
402 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
403 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
404 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
405 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
406 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
407 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
408 | CLANG_WARN_STRICT_PROTOTYPES = YES;
409 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
410 | CLANG_WARN_UNREACHABLE_CODE = YES;
411 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
412 | COPY_PHASE_STRIP = YES;
413 | ENABLE_NS_ASSERTIONS = NO;
414 | ENABLE_STRICT_OBJC_MSGSEND = YES;
415 | GCC_C_LANGUAGE_STANDARD = gnu99;
416 | GCC_NO_COMMON_BLOCKS = YES;
417 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
418 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
419 | GCC_WARN_UNDECLARED_SELECTOR = YES;
420 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
421 | GCC_WARN_UNUSED_FUNCTION = YES;
422 | GCC_WARN_UNUSED_VARIABLE = YES;
423 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
424 | METAL_ENABLE_DEBUG_INFO = NO;
425 | SDKROOT = iphoneos;
426 | SWIFT_COMPILATION_MODE = wholemodule;
427 | SWIFT_OPTIMIZATION_LEVEL = "-O";
428 | VALIDATE_PRODUCT = YES;
429 | };
430 | name = Release;
431 | };
432 | CEABB2601942AD9700FCB13C /* Debug */ = {
433 | isa = XCBuildConfiguration;
434 | buildSettings = {
435 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
436 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
437 | ENABLE_BITCODE = YES;
438 | INFOPLIST_FILE = SCLAlertViewExample/Info.plist;
439 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
440 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
441 | PRODUCT_BUNDLE_IDENTIFIER = "SIX-DAYS-LLC.${PRODUCT_NAME:rfc1034identifier}";
442 | PRODUCT_NAME = "$(TARGET_NAME)";
443 | SWIFT_VERSION = 5.0;
444 | TARGETED_DEVICE_FAMILY = "1,2";
445 | };
446 | name = Debug;
447 | };
448 | CEABB2611942AD9700FCB13C /* Release */ = {
449 | isa = XCBuildConfiguration;
450 | buildSettings = {
451 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
452 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
453 | ENABLE_BITCODE = YES;
454 | INFOPLIST_FILE = SCLAlertViewExample/Info.plist;
455 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
456 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
457 | PRODUCT_BUNDLE_IDENTIFIER = "SIX-DAYS-LLC.${PRODUCT_NAME:rfc1034identifier}";
458 | PRODUCT_NAME = "$(TARGET_NAME)";
459 | SWIFT_VERSION = 5.0;
460 | TARGETED_DEVICE_FAMILY = "1,2";
461 | };
462 | name = Release;
463 | };
464 | CEABB2631942AD9700FCB13C /* Debug */ = {
465 | isa = XCBuildConfiguration;
466 | buildSettings = {
467 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SCLAlertViewExample.app/SCLAlertViewExample";
468 | FRAMEWORK_SEARCH_PATHS = (
469 | "$(SDKROOT)/Developer/Library/Frameworks",
470 | "$(inherited)",
471 | );
472 | GCC_PREPROCESSOR_DEFINITIONS = (
473 | "DEBUG=1",
474 | "$(inherited)",
475 | );
476 | INFOPLIST_FILE = SCLAlertViewExampleTests/Info.plist;
477 | LD_RUNPATH_SEARCH_PATHS = (
478 | "$(inherited)",
479 | "@executable_path/Frameworks",
480 | "@loader_path/Frameworks",
481 | );
482 | METAL_ENABLE_DEBUG_INFO = YES;
483 | PRODUCT_BUNDLE_IDENTIFIER = "SIX-DAYS-LLC.${PRODUCT_NAME:rfc1034identifier}";
484 | PRODUCT_NAME = "$(TARGET_NAME)";
485 | TEST_HOST = "$(BUNDLE_LOADER)";
486 | };
487 | name = Debug;
488 | };
489 | CEABB2641942AD9700FCB13C /* Release */ = {
490 | isa = XCBuildConfiguration;
491 | buildSettings = {
492 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SCLAlertViewExample.app/SCLAlertViewExample";
493 | FRAMEWORK_SEARCH_PATHS = (
494 | "$(SDKROOT)/Developer/Library/Frameworks",
495 | "$(inherited)",
496 | );
497 | INFOPLIST_FILE = SCLAlertViewExampleTests/Info.plist;
498 | LD_RUNPATH_SEARCH_PATHS = (
499 | "$(inherited)",
500 | "@executable_path/Frameworks",
501 | "@loader_path/Frameworks",
502 | );
503 | METAL_ENABLE_DEBUG_INFO = NO;
504 | PRODUCT_BUNDLE_IDENTIFIER = "SIX-DAYS-LLC.${PRODUCT_NAME:rfc1034identifier}";
505 | PRODUCT_NAME = "$(TARGET_NAME)";
506 | TEST_HOST = "$(BUNDLE_LOADER)";
507 | };
508 | name = Release;
509 | };
510 | /* End XCBuildConfiguration section */
511 |
512 | /* Begin XCConfigurationList section */
513 | CEABB23C1942AD9700FCB13C /* Build configuration list for PBXProject "SCLAlertViewExample" */ = {
514 | isa = XCConfigurationList;
515 | buildConfigurations = (
516 | CEABB25D1942AD9700FCB13C /* Debug */,
517 | CEABB25E1942AD9700FCB13C /* Release */,
518 | );
519 | defaultConfigurationIsVisible = 0;
520 | defaultConfigurationName = Release;
521 | };
522 | CEABB25F1942AD9700FCB13C /* Build configuration list for PBXNativeTarget "SCLAlertViewExample" */ = {
523 | isa = XCConfigurationList;
524 | buildConfigurations = (
525 | CEABB2601942AD9700FCB13C /* Debug */,
526 | CEABB2611942AD9700FCB13C /* Release */,
527 | );
528 | defaultConfigurationIsVisible = 0;
529 | defaultConfigurationName = Release;
530 | };
531 | CEABB2621942AD9700FCB13C /* Build configuration list for PBXNativeTarget "SCLAlertViewExampleTests" */ = {
532 | isa = XCConfigurationList;
533 | buildConfigurations = (
534 | CEABB2631942AD9700FCB13C /* Debug */,
535 | CEABB2641942AD9700FCB13C /* Release */,
536 | );
537 | defaultConfigurationIsVisible = 0;
538 | defaultConfigurationName = Release;
539 | };
540 | /* End XCConfigurationList section */
541 | };
542 | rootObject = CEABB2391942AD9700FCB13C /* Project object */;
543 | }
544 |
--------------------------------------------------------------------------------