├── 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 | [![Version](https://img.shields.io/cocoapods/v/SCLAlertView.svg?style=flat)](http://cocoadocs.org/docsets/SCLAlertView/) 5 | [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](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 | ![BackgroundImage](https://raw.githubusercontent.com/vikmeup/SCPopUpView/master/successScreenshot.png)_ 10 | ![BackgroundImage](https://raw.githubusercontent.com/vikmeup/SCPopUpView/master/editScreenshot.png) 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 | --------------------------------------------------------------------------------