├── .github ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── ci.yml │ └── lint.yml ├── .gitignore ├── .swiftlint.yml ├── .travis.yml ├── CHANGELOG.md ├── Example ├── AppDelegate.swift ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ └── swift.imageset │ │ ├── Contents.json │ │ └── swift.pdf ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Extensions.swift ├── Info.plist └── ViewController.swift ├── Images ├── cover.png └── demo.gif ├── LICENSE ├── Package.swift ├── README.md ├── Sources ├── Info.plist ├── UIViewEffectView+Helpers.swift ├── VisualEffectView+SwiftUI.swift ├── VisualEffectView.h └── VisualEffectView.swift ├── VisualEffectView.podspec ├── VisualEffectView.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── xcschemes │ ├── Example.xcscheme │ └── VisualEffectView.xcscheme └── docs ├── Classes.html ├── Classes └── VisualEffectView.html ├── badge.svg ├── css ├── highlight.css └── jazzy.css ├── docsets ├── VisualEffectView.docset │ └── Contents │ │ ├── Info.plist │ │ └── Resources │ │ ├── Documents │ │ ├── Classes.html │ │ ├── Classes │ │ │ └── VisualEffectView.html │ │ ├── badge.svg │ │ ├── css │ │ │ ├── highlight.css │ │ │ └── jazzy.css │ │ ├── img │ │ │ ├── carat.png │ │ │ ├── dash.png │ │ │ └── gh.png │ │ ├── index.html │ │ ├── js │ │ │ ├── jazzy.js │ │ │ └── jquery.min.js │ │ ├── search.json │ │ └── undocumented.json │ │ └── docSet.dsidx └── VisualEffectView.tgz ├── img ├── carat.png ├── dash.png └── gh.png ├── index.html ├── js ├── jazzy.js └── jquery.min.js ├── search.json └── undocumented.json /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at efremidzel@hotmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to _VisualEffectView_ 2 | 3 | The following is a set of guidelines for contributing to _VisualEffectView_ on GitHub. 4 | 5 | > Above all, thank you for your interest in the project and for taking the time to contribute! 👍 6 | 7 | ## Asking Questions 8 | 9 | We don't use GitHub as a support forum. 10 | For any usage questions that are not specific to the project itself, 11 | please ask on [Stack Overflow](https://stackoverflow.com) instead. 12 | By doing so, you'll be more likely to quickly solve your problem, 13 | and you'll allow anyone else with the same question to find the answer. 14 | This also allows maintainers to focus on improving the project for others. 15 | 16 | ## Reporting Other Issues 17 | 18 | A great way to contribute to the project 19 | is to send a detailed issue when you encounter a problem. 20 | We always appreciate a well-written, thorough bug report. 21 | 22 | Check that the project issues database 23 | doesn't already include that problem or suggestion before submitting an issue. 24 | If you find a match, add a quick "+1" or "I have this problem too." 25 | Doing this helps prioritize the most common problems and requests. 26 | 27 | Before submitting a new GitHub issue, please make sure to 28 | 29 | - Check out the [documentation](https://github.com/efremidze/VisualEffectView). 30 | - Read the usage guide on [the README](https://github.com/efremidze/VisualEffectView/#usage). 31 | - Search for [existing GitHub issues](https://github.com/efremidze/VisualEffectView/issues). 32 | 33 | If the above doesn't help, please [submit an issue](https://github.com/efremidze/VisualEffectView/issues) on GitHub. 34 | 35 | ## I want to contribute to _VisualEffectView_ 36 | 37 | ### Prerequisites 38 | 39 | To develop _VisualEffectView_, you will need to use an Xcode version compatible with the Swift version specified in the [README](https://github.com/efremidze/VisualEffectView/#requirements). 40 | 41 | ### Checking out the repository 42 | 43 | - Click the “Fork” button in the upper right corner of repo 44 | - Clone your fork: 45 | - `git clone https://github.com//VisualEffectView.git` 46 | - Create a new branch to work on: 47 | - `git checkout -b ` 48 | - A good name for a branch describes the thing you’ll be working on, e.g. `voice-over`, `fix-font-size`, etc. 49 | 50 | That’s it! Now you’re ready to work on _VisualEffectView_. Open the `VisualEffectView.xcworkspace` workspace to start coding. 51 | 52 | ### Things to keep in mind 53 | 54 | - Please do not change the minimum iOS version 55 | - Always document new public methods and properties 56 | 57 | ### Testing your local changes 58 | 59 | Before opening a pull request, please make sure your changes don't break things. 60 | 61 | - The framework and example project should build without warnings 62 | - The example project should run without issues. 63 | 64 | ### Submitting the PR 65 | 66 | When the coding is done and you’ve finished testing your changes, you are ready to submit the PR to the [main repo](https://github.com/efremidze/VisualEffectView). Some best practices are: 67 | 68 | - Use a descriptive title 69 | - Link the issues that are related to your PR in the body 70 | 71 | ## Code of Conduct 72 | 73 | Help us keep _VisualEffectView_ open and inclusive. Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md). 74 | 75 | ## License 76 | 77 | This project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file. 78 | 79 | _These contribution guidelines were adapted from [_fastlane_](https://github.com/fastlane/fastlane) guides._ 80 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [efremidze] 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### New Issue Checklist 4 | 5 | 6 | - [ ] I updated VisualEffectView to the latest version. 7 | - [ ] I read the [Contribution Guidelines](https://github.com/efremidze/VisualEffectView/blob/master/.github/CONTRIBUTING.md). 8 | - [ ] I read the [documentation](https://github.com/efremidze/VisualEffectView). 9 | - [ ] I searched for [existing GitHub issues](https://github.com/efremidze/VisualEffectView/issues). 10 | 11 | ### Issue Description 12 | 13 | 14 | 15 | ### Environment 16 | 17 | - **iOS Version**: [INSERT iOS VERSION HERE] 18 | - **Device(s)**: [INSERT DEVICE(S) HERE] 19 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### Checklist 4 | - [ ] I've tested my changes. 5 | - [ ] I've read the [Contribution Guidelines](CONTRIBUTING.md). 6 | - [ ] I've updated the documentation if necessary. 7 | 8 | ### Motivation and Context 9 | 10 | 11 | 12 | 13 | 14 | ### Description 15 | 16 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Swift 2 | on: [push] 3 | jobs: 4 | build: 5 | runs-on: macos-latest 6 | steps: 7 | - uses: actions/checkout@v3 8 | - name: Build 9 | run: set -o pipefail && xcodebuild -project "VisualEffectView.xcodeproj" -scheme "Example" CODE_SIGNING_ALLOWED=NO clean build | xcpretty 10 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: SwiftLint 2 | on: [push] 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v3 8 | - name: GitHub Action for SwiftLint 9 | uses: norio-nomura/action-swiftlint@3.2.1 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata 19 | 20 | ## Other 21 | *.xccheckout 22 | *.moved-aside 23 | *.xcuserstate 24 | *.xcscmblueprint 25 | 26 | ## Obj-C/Swift specific 27 | *.hmap 28 | *.ipa 29 | 30 | ## Playgrounds 31 | timeline.xctimeline 32 | playground.xcworkspace 33 | 34 | # Swift Package Manager 35 | # 36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 37 | # Packages/ 38 | .build/ 39 | 40 | # CocoaPods 41 | # 42 | # We recommend against adding the Pods directory to your .gitignore. However 43 | # you should judge for yourself, the pros and cons are mentioned at: 44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 45 | # 46 | # Pods/ 47 | 48 | # Carthage 49 | # 50 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 51 | # Carthage/Checkouts 52 | 53 | Carthage/Build 54 | 55 | # fastlane 56 | # 57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 58 | # screenshots whenever they are needed. 59 | # For more information about the recommended setup visit: 60 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md 61 | 62 | fastlane/report.xml 63 | fastlane/screenshots 64 | -------------------------------------------------------------------------------- /.swiftlint.yml: -------------------------------------------------------------------------------- 1 | disabled_rules: 2 | - force_cast 3 | - identifier_name 4 | - line_length 5 | - trailing_whitespace 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: osx 2 | osx_image: xcode10.2 3 | env: 4 | global: 5 | - PROJECT=VisualEffectView.xcodeproj 6 | - SCHEME="VisualEffectView" 7 | - EXAMPLE_SCHEME="Example" 8 | matrix: 9 | - DESTINATION="OS=12.2,name=iPhone XS" SCHEME="$SCHEME" 10 | - DESTINATION="OS=11.4,name=iPhone X" SCHEME="$SCHEME" 11 | - DESTINATION="OS=10.3.1,name=iPhone 7 Plus" SCHEME="$SCHEME" 12 | script: 13 | - set -o pipefail 14 | 15 | - xcodebuild -project "$PROJECT" -scheme "$EXAMPLE_SCHEME" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty; 16 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change log 2 | 3 | ## [Version 5.0.0](https://github.com/efremidze/VisualEffectView/releases/tag/5.0.0) 4 | 5 | - Dropped iOS 13 support (use 4.x.x for iOS 9+ support) 6 | 7 | ## [Version 4.1.5](https://github.com/efremidze/VisualEffectView/releases/tag/4.1.5) 8 | 9 | - Support SwiftUI (#37) 10 | 11 | ## [Version 4.1.4](https://github.com/efremidze/VisualEffectView/releases/tag/4.1.4) 12 | 13 | - Add background changing directly (#34) 14 | 15 | ## [Version 4.1.3](https://github.com/efremidze/VisualEffectView/releases/tag/4.1.3) 16 | 17 | - Fixed crash on iOS 10 when setting `tintColor` to `nil`. 18 | 19 | ## [Version 4.1.2](https://github.com/efremidze/VisualEffectView/releases/tag/4.1.2) 20 | 21 | - Fixed crashes on iOS 13 or earlier when setting or accessing `tintColorAlpha` while tintColor was `nil`. 22 | 23 | ## [Version 4.1.1](https://github.com/efremidze/VisualEffectView/releases/tag/4.1.1) 24 | Released on 2020-09-24 25 | 26 | - iOS14 blur fix (#27) 27 | 28 | ## [Version 4.1.0](https://github.com/efremidze/VisualEffectView/releases/tag/4.1.0) 29 | Released on 2020-09-14 30 | 31 | - iOS 14 Support 32 | 33 | ## [Version 4.0.2](https://github.com/efremidze/VisualEffectView/releases/tag/4.0.2) 34 | Released on 2019-10-25 35 | 36 | - SPM Update 37 | 38 | ## [Version 4.0.1](https://github.com/efremidze/VisualEffectView/releases/tag/4.0.1) 39 | Released on 2019-10-10 40 | 41 | - SPM Support 42 | 43 | ## [Version 4.0.0](https://github.com/efremidze/VisualEffectView/releases/tag/4.0.0) 44 | Released on 2019-04-24 45 | 46 | - Swift 5.0 Support 47 | 48 | ## [Version 3.1.1](https://github.com/efremidze/VisualEffectView/releases/tag/3.1.1) 49 | Released on 2019-03-11 50 | 51 | - Updated Example 52 | 53 | ## [Version 3.1.0](https://github.com/efremidze/VisualEffectView/releases/tag/3.1.0) 54 | Released on 2018-10-01 55 | 56 | - Swift 4.2 Support 57 | 58 | ## [Version 3.0.2](https://github.com/efremidze/VisualEffectView/releases/tag/3.0.2) 59 | Released on 2018-04-17 60 | 61 | - Added Documentation 62 | 63 | ## [Version 3.0.1](https://github.com/efremidze/VisualEffectView/releases/tag/3.0.1) 64 | Released on 2018-03-30 65 | 66 | - Swift 4.1 Support 67 | 68 | ## [Version 3.0.0](https://github.com/efremidze/VisualEffectView/releases/tag/3.0.0) 69 | Released on 2017-09-20 70 | 71 | - Updated to Swift 4 72 | 73 | ## [Version 2.0.7](https://github.com/efremidze/VisualEffectView/releases/tag/2.0.7) 74 | Released on 2017-07-24 75 | 76 | - Fixed deployment target 77 | 78 | ## [Version 2.0.6](https://github.com/efremidze/VisualEffectView/releases/tag/2.0.6) 79 | Released on 2017-03-28 80 | 81 | - Bug fixes 82 | 83 | ## [Version 2.0.4](https://github.com/efremidze/VisualEffectView/releases/tag/2.0.4) 84 | Released on 2016-11-30 85 | 86 | - Fixed missing CFBundleVersion 87 | 88 | ## [Version 2.0.3](https://github.com/efremidze/VisualEffectView/releases/tag/2.0.3) 89 | Released on 2016-11-29 90 | 91 | - Fixed scale 92 | 93 | ## [Version 2.0.2](https://github.com/efremidze/VisualEffectView/releases/tag/2.0.2) 94 | Released on 2016-10-28 95 | 96 | - Fixed minimum deployment target 97 | 98 | ## [Version 2.0.1](https://github.com/efremidze/VisualEffectView/releases/tag/2.0.1) 99 | Released on 2016-10-20 100 | 101 | - Improved Readme 102 | 103 | ## [Version 2.0.0](https://github.com/efremidze/VisualEffectView/releases/tag/2.0.0) 104 | Released on 2016-10-03 105 | 106 | - Updated to Swift 3.0 107 | 108 | ## [Version 1.0.5](https://github.com/efremidze/VisualEffectView/releases/tag/1.0.5) 109 | Released on 2016-09-15 110 | 111 | - Updated to Swift 2.3 112 | 113 | ## [Version 1.0.4](https://github.com/efremidze/VisualEffectView/releases/tag/1.0.4) 114 | Released on 2016-06-26 115 | 116 | - Improved Readme 117 | 118 | ## [Version 1.0.3](https://github.com/efremidze/VisualEffectView/releases/tag/1.0.3) 119 | Released on 2016-06-07 120 | 121 | - Improved Readme 122 | 123 | ## [Version 1.0.2](https://github.com/efremidze/VisualEffectView/releases/tag/1.0.2) 124 | Released on 2016-05-30 125 | 126 | - Improved Example 127 | 128 | ## [Version 1.0.1](https://github.com/efremidze/VisualEffectView/releases/tag/1.0.1) 129 | Released on 2016-05-29 130 | 131 | - Improved Example 132 | 133 | ## [Version 1.0.0](https://github.com/efremidze/VisualEffectView/releases/tag/1.0.0) 134 | Released on 2016-05-26 135 | 136 | - Created Project 137 | -------------------------------------------------------------------------------- /Example/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // Example 4 | // 5 | // Created by Lasha Efremidze on 12/19/16. 6 | // Copyright © 2016 Lasha Efremidze. 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 | } 22 | -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /Example/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/Assets.xcassets/swift.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "swift.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | }, 12 | "properties" : { 13 | "template-rendering-intent" : "template" 14 | } 15 | } -------------------------------------------------------------------------------- /Example/Assets.xcassets/swift.imageset/swift.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/Example/Assets.xcassets/swift.imageset/swift.pdf -------------------------------------------------------------------------------- /Example/Base.lproj/LaunchScreen.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 | -------------------------------------------------------------------------------- /Example/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 | 35 | 36 | 37 | 38 | 39 | 40 | 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 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | -------------------------------------------------------------------------------- /Example/Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Extensions.swift 3 | // Example 4 | // 5 | // Created by Lasha Efremidze on 3/11/19. 6 | // Copyright © 2019 Lasha Efremidze. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIView { 12 | @discardableResult 13 | func constrain(constraints: (UIView) -> [NSLayoutConstraint]) -> [NSLayoutConstraint] { 14 | let constraints = constraints(self) 15 | self.translatesAutoresizingMaskIntoConstraints = false 16 | NSLayoutConstraint.activate(constraints) 17 | return constraints 18 | } 19 | 20 | @discardableResult 21 | func constrainToEdges(_ inset: UIEdgeInsets = .zero) -> [NSLayoutConstraint] { 22 | return constrain {[ 23 | $0.topAnchor.constraint(equalTo: $0.superview!.topAnchor, constant: inset.top), 24 | $0.leadingAnchor.constraint(equalTo: $0.superview!.leadingAnchor, constant: inset.left), 25 | $0.bottomAnchor.constraint(equalTo: $0.superview!.bottomAnchor, constant: inset.bottom), 26 | $0.trailingAnchor.constraint(equalTo: $0.superview!.trailingAnchor, constant: inset.right) 27 | ]} 28 | } 29 | } 30 | 31 | extension UIColor { 32 | convenience init(red: Int, green: Int, blue: Int) { 33 | self.init(red: CGFloat(red) / 255, green: CGFloat(green) / 255, blue: CGFloat(blue) / 255, alpha: 1) 34 | } 35 | class var red: UIColor { return UIColor(red: 255, green: 59, blue: 48) } 36 | class var orange: UIColor { return UIColor(red: 255, green: 149, blue: 0) } 37 | class var yellow: UIColor { return UIColor(red: 255, green: 204, blue: 0) } 38 | class var green: UIColor { return UIColor(red: 76, green: 217, blue: 100) } 39 | class var tealBlue: UIColor { return UIColor(red: 90, green: 200, blue: 250) } 40 | class var blue: UIColor { return UIColor(red: 0, green: 122, blue: 255) } 41 | class var purple: UIColor { return UIColor(red: 88, green: 86, blue: 214) } 42 | class var pink: UIColor { return UIColor(red: 255, green: 45, blue: 85) } 43 | class var allCases: [UIColor] { 44 | return [red, orange, yellow, green, tealBlue, blue, purple, pink] 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Example/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 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | NSAppTransportSecurity 24 | 25 | NSAllowsArbitraryLoads 26 | 27 | 28 | UILaunchStoryboardName 29 | LaunchScreen 30 | UIMainStoryboardFile 31 | Main 32 | UIRequiredDeviceCapabilities 33 | 34 | armv7 35 | 36 | UIRequiresFullScreen 37 | 38 | UIStatusBarHidden 39 | 40 | UISupportedInterfaceOrientations 41 | 42 | UIInterfaceOrientationPortrait 43 | 44 | UISupportedInterfaceOrientations~ipad 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationPortraitUpsideDown 48 | UIInterfaceOrientationLandscapeLeft 49 | UIInterfaceOrientationLandscapeRight 50 | 51 | UIViewControllerBasedStatusBarAppearance 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Example/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Example 4 | // 5 | // Created by Lasha Efremidze on 5/28/16. 6 | // Copyright © 2016 Lasha Efremidze. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import VisualEffectView 11 | 12 | class ViewController: UIViewController { 13 | 14 | @IBOutlet var blurImageViews: [BlurImageView]! { 15 | didSet { 16 | for (blurImageView, color) in zip(blurImageViews, UIColor.allCases) { 17 | blurImageView.image = UIImage(named: "swift") 18 | blurImageView.contentMode = .center 19 | blurImageView.visualEffectView.tint(color, blurRadius: 2) 20 | } 21 | } 22 | } 23 | 24 | @IBOutlet weak var slider: UISlider! { 25 | didSet { 26 | slider.thumbTintColor = .white 27 | slider.minimumTrackTintColor = .white 28 | slider.maximumTrackTintColor = .white 29 | } 30 | } 31 | 32 | @IBAction func sliderChange(_ slider: UISlider) { 33 | for blurImageView in blurImageViews { 34 | blurImageView.visualEffectView.blurRadius = CGFloat(slider.value) 35 | } 36 | } 37 | 38 | } 39 | 40 | class BlurImageView: UIImageView { 41 | lazy var visualEffectView: VisualEffectView = { [unowned self] in 42 | let view = VisualEffectView() 43 | self.addSubview(view) 44 | view.constrainToEdges() 45 | return view 46 | }() 47 | } 48 | 49 | extension VisualEffectView { 50 | func tint(_ color: UIColor, blurRadius: CGFloat) { 51 | self.colorTint = color 52 | self.colorTintAlpha = 0.5 53 | self.blurRadius = blurRadius 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Images/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/Images/cover.png -------------------------------------------------------------------------------- /Images/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/Images/demo.gif -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Lasha Efremidze 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.3 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: "VisualEffectView", 8 | platforms: [ 9 | .iOS(.v14) 10 | ], 11 | products: [ 12 | // Products define the executables and libraries produced by a package, and make them visible to other packages. 13 | .library( 14 | name: "VisualEffectView", 15 | targets: ["VisualEffectView"]) 16 | ], 17 | dependencies: [ 18 | // Dependencies declare other packages that this package depends on. 19 | // .package(url: /* package url */, from: "1.0.0"), 20 | ], 21 | targets: [ 22 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 23 | // Targets can depend on other targets in this package, and on products in packages which this package depends on. 24 | .target( 25 | name: "VisualEffectView", 26 | dependencies: [], 27 | path: "Sources" 28 | ) 29 | ] 30 | ) 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VisualEffectView 2 | 3 | [![CI](https://github.com/efremidze/VisualEffectView/actions/workflows/ci.yml/badge.svg)](https://github.com/efremidze/VisualEffectView/actions/workflows/ci.yml) 4 | [![CocoaPods](https://img.shields.io/cocoapods/v/VisualEffectView.svg)](https://cocoapods.org/pods/VisualEffectView) 5 | [![Carthage](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg)](https://github.com/Carthage/Carthage) 6 | [![SPM](https://img.shields.io/badge/SPM-compatible-brightgreen.svg)](https://swift.org/package-manager/) 7 | [![Swift](https://img.shields.io/badge/Swift-5.9+-orange.svg)](https://swift.org) 8 | [![License](https://img.shields.io/github/license/efremidze/VisualEffectView.svg)](https://github.com/efremidze/VisualEffectView/blob/master/LICENSE) 9 | 10 | **VisualEffectView** is a blur effect library with tint color support. This library uses the [UIVisualEffectView](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIVisualEffectView/) to generate the blur. 11 | 12 | 13 | 14 | ``` 15 | $ pod try VisualEffectView 16 | ``` 17 | 18 | ## Requirements 19 | 20 | - iOS 14.0+ 21 | - Swift 5 (VisualEffectView 4.x), Swift 4 (VisualEffectView 3.x), Swift 3 (VisualEffectView 2.x), Swift 2 (VisualEffectView 1.x) 22 | - Supports SwiftUI 23 | 24 | ## Usage 25 | 26 | Add an instance of VisualEffectView to your view. 27 | 28 | ```swift 29 | import VisualEffectView 30 | 31 | let visualEffectView = VisualEffectView(frame: CGRect(x: 0, y: 0, width: 320, height: 480)) 32 | 33 | // Configure the view with tint color, blur radius, etc 34 | visualEffectView.colorTint = .redColor() 35 | visualEffectView.colorTintAlpha = 0.2 36 | visualEffectView.blurRadius = 10 37 | visualEffectView.scale = 1 38 | 39 | addSubview(visualEffectView) 40 | ``` 41 | 42 | Depending on the desired effect, the effect may affect content layered behind the view or content added to the visual effect view’s contentView. After you add the visual effect view to the view hierarchy, add any subviews to the contentView property of the visual effect view. Do not add subviews directly to the visual effect view itself. Refer to the [UIVisualEffectView](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIVisualEffectView/) for more info. 43 | 44 | For more examples, take a look at the example project. 45 | 46 | ### Customization 47 | 48 | ```swift 49 | var colorTint: UIColor // tint color. default is nil 50 | var colorTintAlpha: CGFloat // tint color alpha. default is 0 51 | var blurRadius: CGFloat // blur radius. default is 0 52 | var scale: CGFloat // scale factor. default is 1 53 | ``` 54 | 55 | If you want `colorTintAlpha` to be different from `0`, make sure you always set it right after setting the `colorTint` or it may not be applied as expected. 56 | You also have to make sure you don't set `colorTintAlpha` if `colorTint` is `nil`. 57 | 58 | ### Storyboard Support 59 | 60 | Works great with storyboards and xibs. 61 | 62 | ### SwiftUI Support 63 | 64 | VisualEffectView supports SwiftUI. 65 | 66 | ```swift 67 | import VisualEffectView 68 | 69 | struct ContentView: View { 70 | var body: some View { 71 | VisualEffect(colorTint: .white, colorTintAlpha: 0.5, blurRadius: 18, scale: 1) 72 | } 73 | } 74 | ``` 75 | 76 | Make sure that `colorTintAlpha` is not set when `colorTint` is `nil`. 77 | 78 | ## Installation 79 | 80 | ### CocoaPods 81 | To install with [CocoaPods](http://cocoapods.org/), simply add this in your `Podfile`: 82 | ```ruby 83 | use_frameworks! 84 | pod "VisualEffectView" 85 | ``` 86 | 87 | ### Carthage 88 | To install with [Carthage](https://github.com/Carthage/Carthage), simply add this in your `Cartfile`: 89 | ```ruby 90 | github "efremidze/VisualEffectView" 91 | ``` 92 | 93 | ### Manually 94 | 1. Download and drop ```VisualEffectView.swift``` in your project. 95 | 2. Congratulations! 96 | 97 | ## Communication 98 | 99 | - If you **found a bug**, open an issue. 100 | - If you **have a feature request**, open an issue. 101 | - If you **want to contribute**, submit a pull request. 102 | 103 | ## Disclaimer 104 | 105 | VisualEffectView utilizes a private UIKit API to do its magic. Use caution, submitting this code to the App Store adds the risk of being rejected! 106 | 107 | ## Credits 108 | 109 | https://github.com/collinhundley/APCustomBlurView 110 | 111 | ## License 112 | 113 | VisualEffectView is available under the MIT license. See the LICENSE file for more info. 114 | -------------------------------------------------------------------------------- /Sources/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 | $(MARKETING_VERSION) 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Sources/UIViewEffectView+Helpers.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewEffectViewiOS14.swift 3 | // VisualEffectView 4 | // 5 | // Created by Lasha Efremidze on 9/14/20. 6 | // 7 | 8 | import UIKit 9 | 10 | extension UIVisualEffectView { 11 | var backdropView: UIView? { 12 | return subview(of: NSClassFromString("_UIVisualEffectBackdropView")) 13 | } 14 | var overlayView: UIView? { 15 | return subview(of: NSClassFromString("_UIVisualEffectSubview")) 16 | } 17 | var gaussianBlur: NSObject? { 18 | return backdropView?.value(forKey: "filters", withFilterType: "gaussianBlur") 19 | } 20 | var sourceOver: NSObject? { 21 | return overlayView?.value(forKey: "viewEffects", withFilterType: "sourceOver") 22 | } 23 | func prepareForChanges() { 24 | self.effect = UIBlurEffect(style: .light) 25 | gaussianBlur?.setValue(1.0, forKeyPath: "requestedScaleHint") 26 | } 27 | func applyChanges() { 28 | backdropView?.perform(Selector(("applyRequestedFilterEffects"))) 29 | } 30 | } 31 | 32 | extension NSObject { 33 | var requestedValues: [String: Any]? { 34 | get { return value(forKeyPath: "requestedValues") as? [String: Any] } 35 | set { setValue(newValue, forKeyPath: "requestedValues") } 36 | } 37 | func value(forKey key: String, withFilterType filterType: String) -> NSObject? { 38 | return (value(forKeyPath: key) as? [NSObject])?.first { $0.value(forKeyPath: "filterType") as? String == filterType } 39 | } 40 | } 41 | 42 | private extension UIView { 43 | func subview(of classType: AnyClass?) -> UIView? { 44 | return subviews.first { type(of: $0) == classType } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Sources/VisualEffectView+SwiftUI.swift: -------------------------------------------------------------------------------- 1 | // 2 | // VisualEffectView_SwiftUI.swift 3 | // VisualEffectView 4 | // 5 | // Created by 朱浩宇 on 2023/5/10. 6 | // Copyright © 2023 Lasha Efremidze. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | public struct VisualEffect: UIViewRepresentable { 12 | let colorTint: Color? 13 | let colorTintAlpha: CGFloat 14 | let blurRadius: CGFloat 15 | let scale: CGFloat 16 | 17 | public init(colorTint: Color? = nil, colorTintAlpha: CGFloat = 0, blurRadius: CGFloat = 0, scale: CGFloat = 1) { 18 | self.colorTint = colorTint 19 | self.colorTintAlpha = colorTintAlpha 20 | self.blurRadius = blurRadius 21 | self.scale = scale 22 | } 23 | 24 | public func makeUIView(context: Context) -> VisualEffectView { 25 | let view = VisualEffectView() 26 | view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 27 | 28 | if let colorTint { 29 | view.colorTint = colorTint.uiColor() 30 | } 31 | view.colorTintAlpha = colorTintAlpha 32 | view.blurRadius = blurRadius 33 | view.scale = scale 34 | 35 | return view 36 | } 37 | 38 | public func updateUIView(_ uiView: VisualEffectView, context: Context) { 39 | if let colorTint { 40 | uiView.colorTint = colorTint.uiColor() 41 | } 42 | uiView.colorTintAlpha = colorTintAlpha 43 | uiView.blurRadius = blurRadius 44 | uiView.scale = scale 45 | } 46 | } 47 | 48 | struct VisualEffect_Previews: PreviewProvider { 49 | static var previews: some View { 50 | ZStack { 51 | Color.blue 52 | .frame(width: 400, height: 400) 53 | Color.red 54 | .frame(width: 200, height: 100) 55 | VisualEffect(colorTint: .white, colorTintAlpha: 0.5, blurRadius: 18) 56 | .frame(width: 300, height: 200) 57 | } 58 | } 59 | } 60 | 61 | private extension Color { 62 | func uiColor() -> UIColor { 63 | return UIColor(self) 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Sources/VisualEffectView.h: -------------------------------------------------------------------------------- 1 | // 2 | // VisualEffectView.h 3 | // VisualEffectView 4 | // 5 | // Created by Lasha Efremidze on 12/19/16. 6 | // Copyright © 2016 Lasha Efremidze. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for VisualEffectView. 12 | FOUNDATION_EXPORT double VisualEffectViewVersionNumber; 13 | 14 | //! Project version string for VisualEffectView. 15 | FOUNDATION_EXPORT const unsigned char VisualEffectViewVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Sources/VisualEffectView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // VisualEffectView.swift 3 | // VisualEffectView 4 | // 5 | // Created by Lasha Efremidze on 5/26/16. 6 | // Copyright © 2016 Lasha Efremidze. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | /// VisualEffectView is a dynamic background blur view. 12 | @objcMembers 13 | open class VisualEffectView: UIVisualEffectView { 14 | 15 | /// Returns the instance of UIBlurEffect. 16 | private let blurEffect = (NSClassFromString("_UICustomBlurEffect") as! UIBlurEffect.Type).init() 17 | 18 | /** 19 | Tint color. 20 | 21 | The default value is nil. 22 | */ 23 | open var colorTint: UIColor? { 24 | get { 25 | return sourceOver?.value(forKeyPath: "color") as? UIColor 26 | } 27 | set { 28 | prepareForChanges() 29 | sourceOver?.setValue(newValue, forKeyPath: "color") 30 | sourceOver?.perform(Selector(("applyRequestedEffectToView:")), with: overlayView) 31 | applyChanges() 32 | overlayView?.backgroundColor = newValue 33 | } 34 | } 35 | 36 | /** 37 | Tint color alpha. 38 | 39 | Don't use it unless `colorTint` is not nil. 40 | The default value is 0.0. 41 | */ 42 | open var colorTintAlpha: CGFloat { 43 | get { return _value(forKey: .colorTintAlpha) ?? 0.0 } 44 | set { colorTint = colorTint?.withAlphaComponent(newValue) } 45 | } 46 | 47 | /** 48 | Blur radius. 49 | 50 | The default value is 0.0. 51 | */ 52 | open var blurRadius: CGFloat { 53 | get { 54 | return gaussianBlur?.requestedValues?["inputRadius"] as? CGFloat ?? 0 55 | } 56 | set { 57 | prepareForChanges() 58 | gaussianBlur?.requestedValues?["inputRadius"] = newValue 59 | applyChanges() 60 | } 61 | } 62 | 63 | /** 64 | Scale factor. 65 | 66 | The scale factor determines how content in the view is mapped from the logical coordinate space (measured in points) to the device coordinate space (measured in pixels). 67 | 68 | The default value is 1.0. 69 | */ 70 | open var scale: CGFloat { 71 | get { return _value(forKey: .scale) ?? 1.0 } 72 | set { _setValue(newValue, forKey: .scale) } 73 | } 74 | 75 | // MARK: - Initialization 76 | 77 | public override init(effect: UIVisualEffect?) { 78 | super.init(effect: effect) 79 | 80 | scale = 1 81 | } 82 | 83 | required public init?(coder aDecoder: NSCoder) { 84 | super.init(coder: aDecoder) 85 | 86 | scale = 1 87 | } 88 | 89 | } 90 | 91 | // MARK: - Helpers 92 | 93 | private extension VisualEffectView { 94 | 95 | /// Returns the value for the key on the blurEffect. 96 | func _value(forKey key: Key) -> T? { 97 | return blurEffect.value(forKeyPath: key.rawValue) as? T 98 | } 99 | 100 | /// Sets the value for the key on the blurEffect. 101 | func _setValue(_ value: T?, forKey key: Key) { 102 | blurEffect.setValue(value, forKeyPath: key.rawValue) 103 | } 104 | 105 | enum Key: String { 106 | case colorTint, colorTintAlpha, blurRadius, scale 107 | } 108 | 109 | } 110 | 111 | // ["grayscaleTintLevel", "grayscaleTintAlpha", "lightenGrayscaleWithSourceOver", "colorTint", "colorTintAlpha", "colorBurnTintLevel", "colorBurnTintAlpha", "darkeningTintAlpha", "darkeningTintHue", "darkeningTintSaturation", "darkenWithSourceOver", "blurRadius", "saturationDeltaFactor", "scale", "zoom"] 112 | -------------------------------------------------------------------------------- /VisualEffectView.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint VisualEffectView.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = "VisualEffectView" 11 | s.version = "5.0.0" 12 | s.license = 'MIT' 13 | s.homepage = "https://github.com/efremidze/VisualEffectView" 14 | s.author = { "Lasha Efremidze" => "efremidzel@hotmail.com" } 15 | s.documentation_url = 'https://efremidze.github.io/VisualEffectView/' 16 | s.summary = "Dynamic blur background view with tint color (UIVisualEffectView subclass)" 17 | s.source = { :git => 'https://github.com/efremidze/VisualEffectView.git', :tag => s.version } 18 | s.source_files = "Sources/*.swift" 19 | s.swift_version = '5.0' 20 | s.ios.deployment_target = '14.0' 21 | end 22 | -------------------------------------------------------------------------------- /VisualEffectView.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 8B3244031E07D7CB00712FEA /* VisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3244011E07D7CB00712FEA /* VisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 8B3244101E07D7D900712FEA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B32440F1E07D7D900712FEA /* AppDelegate.swift */; }; 12 | 8B3244121E07D7D900712FEA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B3244111E07D7D900712FEA /* ViewController.swift */; }; 13 | 8B3244151E07D7D900712FEA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8B3244131E07D7D900712FEA /* Main.storyboard */; }; 14 | 8B3244171E07D7D900712FEA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8B3244161E07D7D900712FEA /* Assets.xcassets */; }; 15 | 8B32441A1E07D7D900712FEA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8B3244181E07D7D900712FEA /* LaunchScreen.storyboard */; }; 16 | 8B3DFCE01E07D8F5009EAFA2 /* VisualEffectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B3DFCDF1E07D8F5009EAFA2 /* VisualEffectView.swift */; }; 17 | 8BD4B7E61E8A563A00BD74C6 /* VisualEffectView.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; }; 18 | 8BD4B7E71E8A563A00BD74C6 /* VisualEffectView.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 19 | C0864C842A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0864C832A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift */; }; 20 | F449249E206F2D5100117F6B /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = F449249B206F2D5100117F6B /* README.md */; }; 21 | F449249F206F2D5100117F6B /* VisualEffectView.podspec in Resources */ = {isa = PBXBuildFile; fileRef = F449249C206F2D5100117F6B /* VisualEffectView.podspec */; }; 22 | F44924A0206F2D5100117F6B /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = F449249D206F2D5100117F6B /* CHANGELOG.md */; }; 23 | F48F0D532236406400F54233 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F48F0D522236406400F54233 /* Extensions.swift */; }; 24 | F4BE05CB25108C0000500B57 /* UIViewEffectView+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */; }; 25 | /* End PBXBuildFile section */ 26 | 27 | /* Begin PBXContainerItemProxy section */ 28 | 8BD4B7E81E8A563A00BD74C6 /* PBXContainerItemProxy */ = { 29 | isa = PBXContainerItemProxy; 30 | containerPortal = 8B3243F51E07D7CB00712FEA /* Project object */; 31 | proxyType = 1; 32 | remoteGlobalIDString = 8B3243FD1E07D7CB00712FEA; 33 | remoteInfo = VisualEffectView; 34 | }; 35 | /* End PBXContainerItemProxy section */ 36 | 37 | /* Begin PBXCopyFilesBuildPhase section */ 38 | 8BD4B7EA1E8A563A00BD74C6 /* Embed Frameworks */ = { 39 | isa = PBXCopyFilesBuildPhase; 40 | buildActionMask = 2147483647; 41 | dstPath = ""; 42 | dstSubfolderSpec = 10; 43 | files = ( 44 | 8BD4B7E71E8A563A00BD74C6 /* VisualEffectView.framework in Embed Frameworks */, 45 | ); 46 | name = "Embed Frameworks"; 47 | runOnlyForDeploymentPostprocessing = 0; 48 | }; 49 | /* End PBXCopyFilesBuildPhase section */ 50 | 51 | /* Begin PBXFileReference section */ 52 | 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VisualEffectView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 8B3244011E07D7CB00712FEA /* VisualEffectView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VisualEffectView.h; sourceTree = ""; }; 54 | 8B3244021E07D7CB00712FEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 55 | 8B32440D1E07D7D900712FEA /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 56 | 8B32440F1E07D7D900712FEA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 57 | 8B3244111E07D7D900712FEA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 58 | 8B3244141E07D7D900712FEA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 59 | 8B3244161E07D7D900712FEA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 60 | 8B3244191E07D7D900712FEA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 61 | 8B32441B1E07D7D900712FEA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 62 | 8B3DFCDF1E07D8F5009EAFA2 /* VisualEffectView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VisualEffectView.swift; sourceTree = ""; }; 63 | C0864C832A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "VisualEffectView+SwiftUI.swift"; sourceTree = ""; }; 64 | F449249B206F2D5100117F6B /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 65 | F449249C206F2D5100117F6B /* VisualEffectView.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VisualEffectView.podspec; sourceTree = ""; }; 66 | F449249D206F2D5100117F6B /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; }; 67 | F48F0D522236406400F54233 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; 68 | F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewEffectView+Helpers.swift"; sourceTree = ""; }; 69 | /* End PBXFileReference section */ 70 | 71 | /* Begin PBXFrameworksBuildPhase section */ 72 | 8B3243FA1E07D7CB00712FEA /* Frameworks */ = { 73 | isa = PBXFrameworksBuildPhase; 74 | buildActionMask = 2147483647; 75 | files = ( 76 | ); 77 | runOnlyForDeploymentPostprocessing = 0; 78 | }; 79 | 8B32440A1E07D7D900712FEA /* Frameworks */ = { 80 | isa = PBXFrameworksBuildPhase; 81 | buildActionMask = 2147483647; 82 | files = ( 83 | 8BD4B7E61E8A563A00BD74C6 /* VisualEffectView.framework in Frameworks */, 84 | ); 85 | runOnlyForDeploymentPostprocessing = 0; 86 | }; 87 | /* End PBXFrameworksBuildPhase section */ 88 | 89 | /* Begin PBXGroup section */ 90 | 8B3243F41E07D7CB00712FEA = { 91 | isa = PBXGroup; 92 | children = ( 93 | F449249D206F2D5100117F6B /* CHANGELOG.md */, 94 | F449249B206F2D5100117F6B /* README.md */, 95 | F449249C206F2D5100117F6B /* VisualEffectView.podspec */, 96 | 8B3244001E07D7CB00712FEA /* VisualEffectView */, 97 | 8B32440E1E07D7D900712FEA /* Example */, 98 | 8B3243FF1E07D7CB00712FEA /* Products */, 99 | ); 100 | sourceTree = ""; 101 | }; 102 | 8B3243FF1E07D7CB00712FEA /* Products */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */, 106 | 8B32440D1E07D7D900712FEA /* Example.app */, 107 | ); 108 | name = Products; 109 | sourceTree = ""; 110 | }; 111 | 8B3244001E07D7CB00712FEA /* VisualEffectView */ = { 112 | isa = PBXGroup; 113 | children = ( 114 | 8B3DFCDF1E07D8F5009EAFA2 /* VisualEffectView.swift */, 115 | F4BE05CA25108C0000500B57 /* UIViewEffectView+Helpers.swift */, 116 | C0864C832A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift */, 117 | 8B3244011E07D7CB00712FEA /* VisualEffectView.h */, 118 | 8B3244021E07D7CB00712FEA /* Info.plist */, 119 | ); 120 | name = VisualEffectView; 121 | path = Sources; 122 | sourceTree = ""; 123 | }; 124 | 8B32440E1E07D7D900712FEA /* Example */ = { 125 | isa = PBXGroup; 126 | children = ( 127 | 8B32440F1E07D7D900712FEA /* AppDelegate.swift */, 128 | 8B3244111E07D7D900712FEA /* ViewController.swift */, 129 | F48F0D522236406400F54233 /* Extensions.swift */, 130 | 8B3244131E07D7D900712FEA /* Main.storyboard */, 131 | 8B3244161E07D7D900712FEA /* Assets.xcassets */, 132 | 8B3244181E07D7D900712FEA /* LaunchScreen.storyboard */, 133 | 8B32441B1E07D7D900712FEA /* Info.plist */, 134 | ); 135 | path = Example; 136 | sourceTree = ""; 137 | }; 138 | /* End PBXGroup section */ 139 | 140 | /* Begin PBXHeadersBuildPhase section */ 141 | 8B3243FB1E07D7CB00712FEA /* Headers */ = { 142 | isa = PBXHeadersBuildPhase; 143 | buildActionMask = 2147483647; 144 | files = ( 145 | 8B3244031E07D7CB00712FEA /* VisualEffectView.h in Headers */, 146 | ); 147 | runOnlyForDeploymentPostprocessing = 0; 148 | }; 149 | /* End PBXHeadersBuildPhase section */ 150 | 151 | /* Begin PBXNativeTarget section */ 152 | 8B3243FD1E07D7CB00712FEA /* VisualEffectView */ = { 153 | isa = PBXNativeTarget; 154 | buildConfigurationList = 8B3244061E07D7CB00712FEA /* Build configuration list for PBXNativeTarget "VisualEffectView" */; 155 | buildPhases = ( 156 | 8B3243F91E07D7CB00712FEA /* Sources */, 157 | 8B3243FA1E07D7CB00712FEA /* Frameworks */, 158 | 8B3243FB1E07D7CB00712FEA /* Headers */, 159 | 8B3243FC1E07D7CB00712FEA /* Resources */, 160 | ); 161 | buildRules = ( 162 | ); 163 | dependencies = ( 164 | ); 165 | name = VisualEffectView; 166 | productName = VisualEffectView; 167 | productReference = 8B3243FE1E07D7CB00712FEA /* VisualEffectView.framework */; 168 | productType = "com.apple.product-type.framework"; 169 | }; 170 | 8B32440C1E07D7D900712FEA /* Example */ = { 171 | isa = PBXNativeTarget; 172 | buildConfigurationList = 8B32441C1E07D7D900712FEA /* Build configuration list for PBXNativeTarget "Example" */; 173 | buildPhases = ( 174 | 8B3244091E07D7D900712FEA /* Sources */, 175 | 8B32440A1E07D7D900712FEA /* Frameworks */, 176 | 8B32440B1E07D7D900712FEA /* Resources */, 177 | 8BD4B7EA1E8A563A00BD74C6 /* Embed Frameworks */, 178 | ); 179 | buildRules = ( 180 | ); 181 | dependencies = ( 182 | 8BD4B7E91E8A563A00BD74C6 /* PBXTargetDependency */, 183 | ); 184 | name = Example; 185 | productName = Example; 186 | productReference = 8B32440D1E07D7D900712FEA /* Example.app */; 187 | productType = "com.apple.product-type.application"; 188 | }; 189 | /* End PBXNativeTarget section */ 190 | 191 | /* Begin PBXProject section */ 192 | 8B3243F51E07D7CB00712FEA /* Project object */ = { 193 | isa = PBXProject; 194 | attributes = { 195 | LastSwiftUpdateCheck = 0820; 196 | LastUpgradeCheck = 1200; 197 | ORGANIZATIONNAME = "Lasha Efremidze"; 198 | TargetAttributes = { 199 | 8B3243FD1E07D7CB00712FEA = { 200 | CreatedOnToolsVersion = 8.2; 201 | LastSwiftMigration = 1020; 202 | ProvisioningStyle = Automatic; 203 | }; 204 | 8B32440C1E07D7D900712FEA = { 205 | CreatedOnToolsVersion = 8.2; 206 | LastSwiftMigration = 1020; 207 | ProvisioningStyle = Automatic; 208 | }; 209 | }; 210 | }; 211 | buildConfigurationList = 8B3243F81E07D7CB00712FEA /* Build configuration list for PBXProject "VisualEffectView" */; 212 | compatibilityVersion = "Xcode 12.0"; 213 | developmentRegion = en; 214 | hasScannedForEncodings = 0; 215 | knownRegions = ( 216 | en, 217 | Base, 218 | ); 219 | mainGroup = 8B3243F41E07D7CB00712FEA; 220 | productRefGroup = 8B3243FF1E07D7CB00712FEA /* Products */; 221 | projectDirPath = ""; 222 | projectRoot = ""; 223 | targets = ( 224 | 8B3243FD1E07D7CB00712FEA /* VisualEffectView */, 225 | 8B32440C1E07D7D900712FEA /* Example */, 226 | ); 227 | }; 228 | /* End PBXProject section */ 229 | 230 | /* Begin PBXResourcesBuildPhase section */ 231 | 8B3243FC1E07D7CB00712FEA /* Resources */ = { 232 | isa = PBXResourcesBuildPhase; 233 | buildActionMask = 2147483647; 234 | files = ( 235 | F449249F206F2D5100117F6B /* VisualEffectView.podspec in Resources */, 236 | F44924A0206F2D5100117F6B /* CHANGELOG.md in Resources */, 237 | F449249E206F2D5100117F6B /* README.md in Resources */, 238 | ); 239 | runOnlyForDeploymentPostprocessing = 0; 240 | }; 241 | 8B32440B1E07D7D900712FEA /* Resources */ = { 242 | isa = PBXResourcesBuildPhase; 243 | buildActionMask = 2147483647; 244 | files = ( 245 | 8B32441A1E07D7D900712FEA /* LaunchScreen.storyboard in Resources */, 246 | 8B3244171E07D7D900712FEA /* Assets.xcassets in Resources */, 247 | 8B3244151E07D7D900712FEA /* Main.storyboard in Resources */, 248 | ); 249 | runOnlyForDeploymentPostprocessing = 0; 250 | }; 251 | /* End PBXResourcesBuildPhase section */ 252 | 253 | /* Begin PBXSourcesBuildPhase section */ 254 | 8B3243F91E07D7CB00712FEA /* Sources */ = { 255 | isa = PBXSourcesBuildPhase; 256 | buildActionMask = 2147483647; 257 | files = ( 258 | 8B3DFCE01E07D8F5009EAFA2 /* VisualEffectView.swift in Sources */, 259 | F4BE05CB25108C0000500B57 /* UIViewEffectView+Helpers.swift in Sources */, 260 | C0864C842A6FB2D2006B0F49 /* VisualEffectView+SwiftUI.swift in Sources */, 261 | ); 262 | runOnlyForDeploymentPostprocessing = 0; 263 | }; 264 | 8B3244091E07D7D900712FEA /* Sources */ = { 265 | isa = PBXSourcesBuildPhase; 266 | buildActionMask = 2147483647; 267 | files = ( 268 | 8B3244121E07D7D900712FEA /* ViewController.swift in Sources */, 269 | F48F0D532236406400F54233 /* Extensions.swift in Sources */, 270 | 8B3244101E07D7D900712FEA /* AppDelegate.swift in Sources */, 271 | ); 272 | runOnlyForDeploymentPostprocessing = 0; 273 | }; 274 | /* End PBXSourcesBuildPhase section */ 275 | 276 | /* Begin PBXTargetDependency section */ 277 | 8BD4B7E91E8A563A00BD74C6 /* PBXTargetDependency */ = { 278 | isa = PBXTargetDependency; 279 | target = 8B3243FD1E07D7CB00712FEA /* VisualEffectView */; 280 | targetProxy = 8BD4B7E81E8A563A00BD74C6 /* PBXContainerItemProxy */; 281 | }; 282 | /* End PBXTargetDependency section */ 283 | 284 | /* Begin PBXVariantGroup section */ 285 | 8B3244131E07D7D900712FEA /* Main.storyboard */ = { 286 | isa = PBXVariantGroup; 287 | children = ( 288 | 8B3244141E07D7D900712FEA /* Base */, 289 | ); 290 | name = Main.storyboard; 291 | sourceTree = ""; 292 | }; 293 | 8B3244181E07D7D900712FEA /* LaunchScreen.storyboard */ = { 294 | isa = PBXVariantGroup; 295 | children = ( 296 | 8B3244191E07D7D900712FEA /* Base */, 297 | ); 298 | name = LaunchScreen.storyboard; 299 | sourceTree = ""; 300 | }; 301 | /* End PBXVariantGroup section */ 302 | 303 | /* Begin XCBuildConfiguration section */ 304 | 8B3244041E07D7CB00712FEA /* Debug */ = { 305 | isa = XCBuildConfiguration; 306 | buildSettings = { 307 | ALWAYS_SEARCH_USER_PATHS = NO; 308 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 309 | CLANG_ANALYZER_NONNULL = YES; 310 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 311 | CLANG_CXX_LIBRARY = "libc++"; 312 | CLANG_ENABLE_MODULES = YES; 313 | CLANG_ENABLE_OBJC_ARC = YES; 314 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 315 | CLANG_WARN_BOOL_CONVERSION = YES; 316 | CLANG_WARN_COMMA = YES; 317 | CLANG_WARN_CONSTANT_CONVERSION = YES; 318 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 319 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 320 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 321 | CLANG_WARN_EMPTY_BODY = YES; 322 | CLANG_WARN_ENUM_CONVERSION = YES; 323 | CLANG_WARN_INFINITE_RECURSION = YES; 324 | CLANG_WARN_INT_CONVERSION = YES; 325 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 326 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 327 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 328 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 329 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 330 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 331 | CLANG_WARN_STRICT_PROTOTYPES = YES; 332 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 333 | CLANG_WARN_UNREACHABLE_CODE = YES; 334 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 335 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 336 | COPY_PHASE_STRIP = NO; 337 | CURRENT_PROJECT_VERSION = 1; 338 | DEBUG_INFORMATION_FORMAT = dwarf; 339 | ENABLE_STRICT_OBJC_MSGSEND = YES; 340 | ENABLE_TESTABILITY = YES; 341 | GCC_C_LANGUAGE_STANDARD = gnu99; 342 | GCC_DYNAMIC_NO_PIC = NO; 343 | GCC_NO_COMMON_BLOCKS = YES; 344 | GCC_OPTIMIZATION_LEVEL = 0; 345 | GCC_PREPROCESSOR_DEFINITIONS = ( 346 | "DEBUG=1", 347 | "$(inherited)", 348 | ); 349 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 350 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 351 | GCC_WARN_UNDECLARED_SELECTOR = YES; 352 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 353 | GCC_WARN_UNUSED_FUNCTION = YES; 354 | GCC_WARN_UNUSED_VARIABLE = YES; 355 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 356 | MTL_ENABLE_DEBUG_INFO = YES; 357 | ONLY_ACTIVE_ARCH = YES; 358 | SDKROOT = iphoneos; 359 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 360 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 361 | SWIFT_VERSION = 5.0; 362 | TARGETED_DEVICE_FAMILY = "1,2"; 363 | VERSIONING_SYSTEM = "apple-generic"; 364 | VERSION_INFO_PREFIX = ""; 365 | }; 366 | name = Debug; 367 | }; 368 | 8B3244051E07D7CB00712FEA /* Release */ = { 369 | isa = XCBuildConfiguration; 370 | buildSettings = { 371 | ALWAYS_SEARCH_USER_PATHS = NO; 372 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 373 | CLANG_ANALYZER_NONNULL = YES; 374 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 375 | CLANG_CXX_LIBRARY = "libc++"; 376 | CLANG_ENABLE_MODULES = YES; 377 | CLANG_ENABLE_OBJC_ARC = YES; 378 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 379 | CLANG_WARN_BOOL_CONVERSION = YES; 380 | CLANG_WARN_COMMA = YES; 381 | CLANG_WARN_CONSTANT_CONVERSION = YES; 382 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 383 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 384 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 385 | CLANG_WARN_EMPTY_BODY = YES; 386 | CLANG_WARN_ENUM_CONVERSION = YES; 387 | CLANG_WARN_INFINITE_RECURSION = YES; 388 | CLANG_WARN_INT_CONVERSION = YES; 389 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 390 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 391 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 392 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 393 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 394 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 395 | CLANG_WARN_STRICT_PROTOTYPES = YES; 396 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 397 | CLANG_WARN_UNREACHABLE_CODE = YES; 398 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 399 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 400 | COPY_PHASE_STRIP = NO; 401 | CURRENT_PROJECT_VERSION = 1; 402 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 403 | ENABLE_NS_ASSERTIONS = NO; 404 | ENABLE_STRICT_OBJC_MSGSEND = YES; 405 | GCC_C_LANGUAGE_STANDARD = gnu99; 406 | GCC_NO_COMMON_BLOCKS = YES; 407 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 408 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 409 | GCC_WARN_UNDECLARED_SELECTOR = YES; 410 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 411 | GCC_WARN_UNUSED_FUNCTION = YES; 412 | GCC_WARN_UNUSED_VARIABLE = YES; 413 | IPHONEOS_DEPLOYMENT_TARGET = 14.0; 414 | MTL_ENABLE_DEBUG_INFO = NO; 415 | SDKROOT = iphoneos; 416 | SWIFT_COMPILATION_MODE = wholemodule; 417 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 418 | SWIFT_VERSION = 5.0; 419 | TARGETED_DEVICE_FAMILY = "1,2"; 420 | VALIDATE_PRODUCT = YES; 421 | VERSIONING_SYSTEM = "apple-generic"; 422 | VERSION_INFO_PREFIX = ""; 423 | }; 424 | name = Release; 425 | }; 426 | 8B3244071E07D7CB00712FEA /* Debug */ = { 427 | isa = XCBuildConfiguration; 428 | buildSettings = { 429 | CLANG_ENABLE_MODULES = YES; 430 | CODE_SIGN_IDENTITY = ""; 431 | DEFINES_MODULE = YES; 432 | DEVELOPMENT_TEAM = ""; 433 | DYLIB_COMPATIBILITY_VERSION = 1; 434 | DYLIB_CURRENT_VERSION = 1; 435 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 436 | INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; 437 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 438 | LD_RUNPATH_SEARCH_PATHS = ( 439 | "$(inherited)", 440 | "@executable_path/Frameworks", 441 | "@loader_path/Frameworks", 442 | ); 443 | MARKETING_VERSION = 4.1.5; 444 | PRODUCT_BUNDLE_IDENTIFIER = com.efremidze.VisualEffectView; 445 | PRODUCT_NAME = "$(TARGET_NAME)"; 446 | SKIP_INSTALL = YES; 447 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 448 | }; 449 | name = Debug; 450 | }; 451 | 8B3244081E07D7CB00712FEA /* Release */ = { 452 | isa = XCBuildConfiguration; 453 | buildSettings = { 454 | CLANG_ENABLE_MODULES = YES; 455 | CODE_SIGN_IDENTITY = ""; 456 | DEFINES_MODULE = YES; 457 | DEVELOPMENT_TEAM = ""; 458 | DYLIB_COMPATIBILITY_VERSION = 1; 459 | DYLIB_CURRENT_VERSION = 1; 460 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 461 | INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; 462 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 463 | LD_RUNPATH_SEARCH_PATHS = ( 464 | "$(inherited)", 465 | "@executable_path/Frameworks", 466 | "@loader_path/Frameworks", 467 | ); 468 | MARKETING_VERSION = 4.1.5; 469 | PRODUCT_BUNDLE_IDENTIFIER = com.efremidze.VisualEffectView; 470 | PRODUCT_NAME = "$(TARGET_NAME)"; 471 | SKIP_INSTALL = YES; 472 | }; 473 | name = Release; 474 | }; 475 | 8B32441D1E07D7D900712FEA /* Debug */ = { 476 | isa = XCBuildConfiguration; 477 | buildSettings = { 478 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 479 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 480 | DEVELOPMENT_TEAM = ""; 481 | INFOPLIST_FILE = Example/Info.plist; 482 | LD_RUNPATH_SEARCH_PATHS = ( 483 | "$(inherited)", 484 | "@executable_path/Frameworks", 485 | ); 486 | PRODUCT_BUNDLE_IDENTIFIER = com.efremidze.Example; 487 | PRODUCT_NAME = "$(TARGET_NAME)"; 488 | }; 489 | name = Debug; 490 | }; 491 | 8B32441E1E07D7D900712FEA /* Release */ = { 492 | isa = XCBuildConfiguration; 493 | buildSettings = { 494 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 495 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 496 | DEVELOPMENT_TEAM = ""; 497 | INFOPLIST_FILE = Example/Info.plist; 498 | LD_RUNPATH_SEARCH_PATHS = ( 499 | "$(inherited)", 500 | "@executable_path/Frameworks", 501 | ); 502 | PRODUCT_BUNDLE_IDENTIFIER = com.efremidze.Example; 503 | PRODUCT_NAME = "$(TARGET_NAME)"; 504 | }; 505 | name = Release; 506 | }; 507 | /* End XCBuildConfiguration section */ 508 | 509 | /* Begin XCConfigurationList section */ 510 | 8B3243F81E07D7CB00712FEA /* Build configuration list for PBXProject "VisualEffectView" */ = { 511 | isa = XCConfigurationList; 512 | buildConfigurations = ( 513 | 8B3244041E07D7CB00712FEA /* Debug */, 514 | 8B3244051E07D7CB00712FEA /* Release */, 515 | ); 516 | defaultConfigurationIsVisible = 0; 517 | defaultConfigurationName = Release; 518 | }; 519 | 8B3244061E07D7CB00712FEA /* Build configuration list for PBXNativeTarget "VisualEffectView" */ = { 520 | isa = XCConfigurationList; 521 | buildConfigurations = ( 522 | 8B3244071E07D7CB00712FEA /* Debug */, 523 | 8B3244081E07D7CB00712FEA /* Release */, 524 | ); 525 | defaultConfigurationIsVisible = 0; 526 | defaultConfigurationName = Release; 527 | }; 528 | 8B32441C1E07D7D900712FEA /* Build configuration list for PBXNativeTarget "Example" */ = { 529 | isa = XCConfigurationList; 530 | buildConfigurations = ( 531 | 8B32441D1E07D7D900712FEA /* Debug */, 532 | 8B32441E1E07D7D900712FEA /* Release */, 533 | ); 534 | defaultConfigurationIsVisible = 0; 535 | defaultConfigurationName = Release; 536 | }; 537 | /* End XCConfigurationList section */ 538 | }; 539 | rootObject = 8B3243F51E07D7CB00712FEA /* Project object */; 540 | } 541 | -------------------------------------------------------------------------------- /VisualEffectView.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /VisualEffectView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /VisualEffectView.xcodeproj/xcshareddata/xcschemes/Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /VisualEffectView.xcodeproj/xcshareddata/xcschemes/VisualEffectView.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 44 | 45 | 51 | 52 | 53 | 54 | 60 | 61 | 67 | 68 | 69 | 70 | 72 | 73 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /docs/Classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Classes Reference 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

VisualEffectView Docs (71% documented)

18 |
19 |
20 |
21 | 26 |
27 |
28 | 40 |
41 |
42 |
43 |

Classes

44 |

The following classes are available globally.

45 | 46 |
47 |
48 |
49 |
    50 |
  • 51 |
    52 | 53 | 54 | 55 | VisualEffectView 56 | 57 |
    58 |
    59 |
    60 |
    61 |
    62 |
    63 |

    VisualEffectView is a dynamic background blur view.

    64 | 65 | See more 66 |
    67 |
    68 |

    Declaration

    69 |
    70 |

    Swift

    71 |
    open class VisualEffectView : UIVisualEffectView
    72 | 73 |
    74 |
    75 |
    76 |
    77 |
  • 78 |
79 |
80 |
81 |
82 | 86 |
87 |
88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /docs/Classes/VisualEffectView.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | VisualEffectView Class Reference 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

VisualEffectView Docs (71% documented)

18 |
19 |
20 |
21 | 26 |
27 |
28 | 40 |
41 |
42 |
43 |

VisualEffectView

44 |
45 |
46 |
open class VisualEffectView : UIVisualEffectView
47 | 48 |
49 |
50 |

VisualEffectView is a dynamic background blur view.

51 | 52 |
53 |
54 |
55 |
    56 |
  • 57 |
    58 | 59 | 60 | 61 | colorTint 62 | 63 |
    64 |
    65 |
    66 |
    67 |
    68 |
    69 |

    Tint color.

    70 | 71 |

    The default value is nil.

    72 | 73 |
    74 |
    75 |

    Declaration

    76 |
    77 |

    Swift

    78 |
    open var colorTint: UIColor? { get set }
    79 | 80 |
    81 |
    82 |
    83 |
    84 |
  • 85 |
  • 86 |
    87 | 88 | 89 | 90 | colorTintAlpha 91 | 92 |
    93 |
    94 |
    95 |
    96 |
    97 |
    98 |

    Tint color alpha.

    99 | 100 |

    The default value is 0.0.

    101 | 102 |
    103 |
    104 |

    Declaration

    105 |
    106 |

    Swift

    107 |
    open var colorTintAlpha: CGFloat { get set }
    108 | 109 |
    110 |
    111 |
    112 |
    113 |
  • 114 |
  • 115 |
    116 | 117 | 118 | 119 | blurRadius 120 | 121 |
    122 |
    123 |
    124 |
    125 |
    126 |
    127 |

    Blur radius.

    128 | 129 |

    The default value is 0.0.

    130 | 131 |
    132 |
    133 |

    Declaration

    134 |
    135 |

    Swift

    136 |
    open var blurRadius: CGFloat { get set }
    137 | 138 |
    139 |
    140 |
    141 |
    142 |
  • 143 |
  • 144 |
    145 | 146 | 147 | 148 | scale 149 | 150 |
    151 |
    152 |
    153 |
    154 |
    155 |
    156 |

    Scale factor.

    157 | 158 |

    The scale factor determines how content in the view is mapped from the logical coordinate space (measured in points) to the device coordinate space (measured in pixels).

    159 | 160 |

    The default value is 1.0.

    161 | 162 |
    163 |
    164 |

    Declaration

    165 |
    166 |

    Swift

    167 |
    open var scale: CGFloat { get set }
    168 | 169 |
    170 |
    171 |
    172 |
    173 |
  • 174 |
175 |
176 |
177 |
178 | 179 | 180 | 181 |

Initialization

182 |
183 |
184 |
    185 |
  • 186 |
    187 | 188 | 189 | 190 | init(effect:) 191 | 192 |
    193 |
    194 |
    195 |
    196 |
    197 |
    198 |

    Undocumented

    199 | 200 |
    201 |
    202 |

    Declaration

    203 |
    204 |

    Swift

    205 |
    public override init(effect: UIVisualEffect?)
    206 | 207 |
    208 |
    209 |
    210 |
    211 |
  • 212 |
  • 213 |
    214 | 215 | 216 | 217 | init(coder:) 218 | 219 |
    220 |
    221 |
    222 |
    223 |
    224 |
    225 |

    Undocumented

    226 | 227 |
    228 |
    229 |

    Declaration

    230 |
    231 |

    Swift

    232 |
    required public init?(coder aDecoder: NSCoder)
    233 | 234 |
    235 |
    236 |
    237 |
    238 |
  • 239 |
240 |
241 |
242 |
243 | 247 |
248 |
249 | 250 | 251 | 252 | -------------------------------------------------------------------------------- /docs/badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | documentation 17 | 18 | 19 | documentation 20 | 21 | 22 | 71% 23 | 24 | 25 | 71% 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/css/highlight.css: -------------------------------------------------------------------------------- 1 | /* Credit to https://gist.github.com/wataru420/2048287 */ 2 | .highlight { 3 | /* Comment */ 4 | /* Error */ 5 | /* Keyword */ 6 | /* Operator */ 7 | /* Comment.Multiline */ 8 | /* Comment.Preproc */ 9 | /* Comment.Single */ 10 | /* Comment.Special */ 11 | /* Generic.Deleted */ 12 | /* Generic.Deleted.Specific */ 13 | /* Generic.Emph */ 14 | /* Generic.Error */ 15 | /* Generic.Heading */ 16 | /* Generic.Inserted */ 17 | /* Generic.Inserted.Specific */ 18 | /* Generic.Output */ 19 | /* Generic.Prompt */ 20 | /* Generic.Strong */ 21 | /* Generic.Subheading */ 22 | /* Generic.Traceback */ 23 | /* Keyword.Constant */ 24 | /* Keyword.Declaration */ 25 | /* Keyword.Pseudo */ 26 | /* Keyword.Reserved */ 27 | /* Keyword.Type */ 28 | /* Literal.Number */ 29 | /* Literal.String */ 30 | /* Name.Attribute */ 31 | /* Name.Builtin */ 32 | /* Name.Class */ 33 | /* Name.Constant */ 34 | /* Name.Entity */ 35 | /* Name.Exception */ 36 | /* Name.Function */ 37 | /* Name.Namespace */ 38 | /* Name.Tag */ 39 | /* Name.Variable */ 40 | /* Operator.Word */ 41 | /* Text.Whitespace */ 42 | /* Literal.Number.Float */ 43 | /* Literal.Number.Hex */ 44 | /* Literal.Number.Integer */ 45 | /* Literal.Number.Oct */ 46 | /* Literal.String.Backtick */ 47 | /* Literal.String.Char */ 48 | /* Literal.String.Doc */ 49 | /* Literal.String.Double */ 50 | /* Literal.String.Escape */ 51 | /* Literal.String.Heredoc */ 52 | /* Literal.String.Interpol */ 53 | /* Literal.String.Other */ 54 | /* Literal.String.Regex */ 55 | /* Literal.String.Single */ 56 | /* Literal.String.Symbol */ 57 | /* Name.Builtin.Pseudo */ 58 | /* Name.Variable.Class */ 59 | /* Name.Variable.Global */ 60 | /* Name.Variable.Instance */ 61 | /* Literal.Number.Integer.Long */ } 62 | .highlight .c { 63 | color: #999988; 64 | font-style: italic; } 65 | .highlight .err { 66 | color: #a61717; 67 | background-color: #e3d2d2; } 68 | .highlight .k { 69 | color: #000000; 70 | font-weight: bold; } 71 | .highlight .o { 72 | color: #000000; 73 | font-weight: bold; } 74 | .highlight .cm { 75 | color: #999988; 76 | font-style: italic; } 77 | .highlight .cp { 78 | color: #999999; 79 | font-weight: bold; } 80 | .highlight .c1 { 81 | color: #999988; 82 | font-style: italic; } 83 | .highlight .cs { 84 | color: #999999; 85 | font-weight: bold; 86 | font-style: italic; } 87 | .highlight .gd { 88 | color: #000000; 89 | background-color: #ffdddd; } 90 | .highlight .gd .x { 91 | color: #000000; 92 | background-color: #ffaaaa; } 93 | .highlight .ge { 94 | color: #000000; 95 | font-style: italic; } 96 | .highlight .gr { 97 | color: #aa0000; } 98 | .highlight .gh { 99 | color: #999999; } 100 | .highlight .gi { 101 | color: #000000; 102 | background-color: #ddffdd; } 103 | .highlight .gi .x { 104 | color: #000000; 105 | background-color: #aaffaa; } 106 | .highlight .go { 107 | color: #888888; } 108 | .highlight .gp { 109 | color: #555555; } 110 | .highlight .gs { 111 | font-weight: bold; } 112 | .highlight .gu { 113 | color: #aaaaaa; } 114 | .highlight .gt { 115 | color: #aa0000; } 116 | .highlight .kc { 117 | color: #000000; 118 | font-weight: bold; } 119 | .highlight .kd { 120 | color: #000000; 121 | font-weight: bold; } 122 | .highlight .kp { 123 | color: #000000; 124 | font-weight: bold; } 125 | .highlight .kr { 126 | color: #000000; 127 | font-weight: bold; } 128 | .highlight .kt { 129 | color: #445588; } 130 | .highlight .m { 131 | color: #009999; } 132 | .highlight .s { 133 | color: #d14; } 134 | .highlight .na { 135 | color: #008080; } 136 | .highlight .nb { 137 | color: #0086B3; } 138 | .highlight .nc { 139 | color: #445588; 140 | font-weight: bold; } 141 | .highlight .no { 142 | color: #008080; } 143 | .highlight .ni { 144 | color: #800080; } 145 | .highlight .ne { 146 | color: #990000; 147 | font-weight: bold; } 148 | .highlight .nf { 149 | color: #990000; } 150 | .highlight .nn { 151 | color: #555555; } 152 | .highlight .nt { 153 | color: #000080; } 154 | .highlight .nv { 155 | color: #008080; } 156 | .highlight .ow { 157 | color: #000000; 158 | font-weight: bold; } 159 | .highlight .w { 160 | color: #bbbbbb; } 161 | .highlight .mf { 162 | color: #009999; } 163 | .highlight .mh { 164 | color: #009999; } 165 | .highlight .mi { 166 | color: #009999; } 167 | .highlight .mo { 168 | color: #009999; } 169 | .highlight .sb { 170 | color: #d14; } 171 | .highlight .sc { 172 | color: #d14; } 173 | .highlight .sd { 174 | color: #d14; } 175 | .highlight .s2 { 176 | color: #d14; } 177 | .highlight .se { 178 | color: #d14; } 179 | .highlight .sh { 180 | color: #d14; } 181 | .highlight .si { 182 | color: #d14; } 183 | .highlight .sx { 184 | color: #d14; } 185 | .highlight .sr { 186 | color: #009926; } 187 | .highlight .s1 { 188 | color: #d14; } 189 | .highlight .ss { 190 | color: #990073; } 191 | .highlight .bp { 192 | color: #999999; } 193 | .highlight .vc { 194 | color: #008080; } 195 | .highlight .vg { 196 | color: #008080; } 197 | .highlight .vi { 198 | color: #008080; } 199 | .highlight .il { 200 | color: #009999; } 201 | -------------------------------------------------------------------------------- /docs/css/jazzy.css: -------------------------------------------------------------------------------- 1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { 2 | background: transparent; 3 | border: 0; 4 | margin: 0; 5 | outline: 0; 6 | padding: 0; 7 | vertical-align: baseline; } 8 | 9 | body { 10 | background-color: #f2f2f2; 11 | font-family: Helvetica, freesans, Arial, sans-serif; 12 | font-size: 14px; 13 | -webkit-font-smoothing: subpixel-antialiased; 14 | word-wrap: break-word; } 15 | 16 | h1, h2, h3 { 17 | margin-top: 0.8em; 18 | margin-bottom: 0.3em; 19 | font-weight: 100; 20 | color: black; } 21 | 22 | h1 { 23 | font-size: 2.5em; } 24 | 25 | h2 { 26 | font-size: 2em; 27 | border-bottom: 1px solid #e2e2e2; } 28 | 29 | h4 { 30 | font-size: 13px; 31 | line-height: 1.5; 32 | margin-top: 21px; } 33 | 34 | h5 { 35 | font-size: 1.1em; } 36 | 37 | h6 { 38 | font-size: 1.1em; 39 | color: #777; } 40 | 41 | .section-name { 42 | color: gray; 43 | display: block; 44 | font-family: Helvetica; 45 | font-size: 22px; 46 | font-weight: 100; 47 | margin-bottom: 15px; } 48 | 49 | pre, code { 50 | font: 0.95em Menlo, monospace; 51 | color: #777; 52 | word-wrap: normal; } 53 | 54 | p code, li code { 55 | background-color: #eee; 56 | padding: 2px 4px; 57 | border-radius: 4px; } 58 | 59 | a { 60 | color: #0088cc; 61 | text-decoration: none; } 62 | 63 | ul { 64 | padding-left: 15px; } 65 | 66 | li { 67 | line-height: 1.8em; } 68 | 69 | img { 70 | max-width: 100%; } 71 | 72 | blockquote { 73 | margin-left: 0; 74 | padding: 0 10px; 75 | border-left: 4px solid #ccc; } 76 | 77 | .content-wrapper { 78 | margin: 0 auto; 79 | width: 980px; } 80 | 81 | header { 82 | font-size: 0.85em; 83 | line-height: 26px; 84 | background-color: #414141; 85 | position: fixed; 86 | width: 100%; 87 | z-index: 1; } 88 | header img { 89 | padding-right: 6px; 90 | vertical-align: -4px; 91 | height: 16px; } 92 | header a { 93 | color: #fff; } 94 | header p { 95 | float: left; 96 | color: #999; } 97 | header .header-right { 98 | float: right; 99 | margin-left: 16px; } 100 | 101 | #breadcrumbs { 102 | background-color: #f2f2f2; 103 | height: 27px; 104 | padding-top: 17px; 105 | position: fixed; 106 | width: 100%; 107 | z-index: 1; 108 | margin-top: 26px; } 109 | #breadcrumbs #carat { 110 | height: 10px; 111 | margin: 0 5px; } 112 | 113 | .sidebar { 114 | background-color: #f9f9f9; 115 | border: 1px solid #e2e2e2; 116 | overflow-y: auto; 117 | overflow-x: hidden; 118 | position: fixed; 119 | top: 70px; 120 | bottom: 0; 121 | width: 230px; 122 | word-wrap: normal; } 123 | 124 | .nav-groups { 125 | list-style-type: none; 126 | background: #fff; 127 | padding-left: 0; } 128 | 129 | .nav-group-name { 130 | border-bottom: 1px solid #e2e2e2; 131 | font-size: 1.1em; 132 | font-weight: 100; 133 | padding: 15px 0 15px 20px; } 134 | .nav-group-name > a { 135 | color: #333; } 136 | 137 | .nav-group-tasks { 138 | margin-top: 5px; } 139 | 140 | .nav-group-task { 141 | font-size: 0.9em; 142 | list-style-type: none; 143 | white-space: nowrap; } 144 | .nav-group-task a { 145 | color: #888; } 146 | 147 | .main-content { 148 | background-color: #fff; 149 | border: 1px solid #e2e2e2; 150 | margin-left: 246px; 151 | position: absolute; 152 | overflow: hidden; 153 | padding-bottom: 60px; 154 | top: 70px; 155 | width: 734px; } 156 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { 157 | margin-bottom: 1em; } 158 | .main-content p { 159 | line-height: 1.8em; } 160 | .main-content section .section:first-child { 161 | margin-top: 0; 162 | padding-top: 0; } 163 | .main-content section .task-group-section .task-group:first-of-type { 164 | padding-top: 10px; } 165 | .main-content section .task-group-section .task-group:first-of-type .section-name { 166 | padding-top: 15px; } 167 | .main-content section .heading:before { 168 | content: ""; 169 | display: block; 170 | padding-top: 70px; 171 | margin: -70px 0 0; } 172 | 173 | .section { 174 | padding: 0 25px; } 175 | 176 | .highlight { 177 | background-color: #eee; 178 | padding: 10px 12px; 179 | border: 1px solid #e2e2e2; 180 | border-radius: 4px; 181 | overflow-x: auto; } 182 | 183 | .declaration .highlight { 184 | overflow-x: initial; 185 | padding: 0 40px 40px 0; 186 | margin-bottom: -25px; 187 | background-color: transparent; 188 | border: none; } 189 | 190 | .section-name { 191 | margin: 0; 192 | margin-left: 18px; } 193 | 194 | .task-group-section { 195 | padding-left: 6px; 196 | border-top: 1px solid #e2e2e2; } 197 | 198 | .task-group { 199 | padding-top: 0px; } 200 | 201 | .task-name-container a[name]:before { 202 | content: ""; 203 | display: block; 204 | padding-top: 70px; 205 | margin: -70px 0 0; } 206 | 207 | .item { 208 | padding-top: 8px; 209 | width: 100%; 210 | list-style-type: none; } 211 | .item a[name]:before { 212 | content: ""; 213 | display: block; 214 | padding-top: 70px; 215 | margin: -70px 0 0; } 216 | .item code { 217 | background-color: transparent; 218 | padding: 0; } 219 | .item .token { 220 | padding-left: 3px; 221 | margin-left: 15px; 222 | font-size: 11.9px; } 223 | .item .declaration-note { 224 | font-size: .85em; 225 | color: gray; 226 | font-style: italic; } 227 | 228 | .pointer-container { 229 | border-bottom: 1px solid #e2e2e2; 230 | left: -23px; 231 | padding-bottom: 13px; 232 | position: relative; 233 | width: 110%; } 234 | 235 | .pointer { 236 | background: #f9f9f9; 237 | border-left: 1px solid #e2e2e2; 238 | border-top: 1px solid #e2e2e2; 239 | height: 12px; 240 | left: 21px; 241 | top: -7px; 242 | -webkit-transform: rotate(45deg); 243 | -moz-transform: rotate(45deg); 244 | -o-transform: rotate(45deg); 245 | transform: rotate(45deg); 246 | position: absolute; 247 | width: 12px; } 248 | 249 | .height-container { 250 | display: none; 251 | left: -25px; 252 | padding: 0 25px; 253 | position: relative; 254 | width: 100%; 255 | overflow: hidden; } 256 | .height-container .section { 257 | background: #f9f9f9; 258 | border-bottom: 1px solid #e2e2e2; 259 | left: -25px; 260 | position: relative; 261 | width: 100%; 262 | padding-top: 10px; 263 | padding-bottom: 5px; } 264 | 265 | .aside, .language { 266 | padding: 6px 12px; 267 | margin: 12px 0; 268 | border-left: 5px solid #dddddd; 269 | overflow-y: hidden; } 270 | .aside .aside-title, .language .aside-title { 271 | font-size: 9px; 272 | letter-spacing: 2px; 273 | text-transform: uppercase; 274 | padding-bottom: 0; 275 | margin: 0; 276 | color: #aaa; 277 | -webkit-user-select: none; } 278 | .aside p:last-child, .language p:last-child { 279 | margin-bottom: 0; } 280 | 281 | .language { 282 | border-left: 5px solid #cde9f4; } 283 | .language .aside-title { 284 | color: #4b8afb; } 285 | 286 | .aside-warning { 287 | border-left: 5px solid #ff6666; } 288 | .aside-warning .aside-title { 289 | color: #ff0000; } 290 | 291 | .graybox { 292 | border-collapse: collapse; 293 | width: 100%; } 294 | .graybox p { 295 | margin: 0; 296 | word-break: break-word; 297 | min-width: 50px; } 298 | .graybox td { 299 | border: 1px solid #e2e2e2; 300 | padding: 5px 25px 5px 10px; 301 | vertical-align: middle; } 302 | .graybox tr td:first-of-type { 303 | text-align: right; 304 | padding: 7px; 305 | vertical-align: top; 306 | word-break: normal; 307 | width: 40px; } 308 | 309 | .slightly-smaller { 310 | font-size: 0.9em; } 311 | 312 | #footer { 313 | position: absolute; 314 | bottom: 10px; 315 | margin-left: 25px; } 316 | #footer p { 317 | margin: 0; 318 | color: #aaa; 319 | font-size: 0.8em; } 320 | 321 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar { 322 | display: none; } 323 | html.dash .main-content { 324 | width: 980px; 325 | margin-left: 0; 326 | border: none; 327 | width: 100%; 328 | top: 0; 329 | padding-bottom: 0; } 330 | html.dash .height-container { 331 | display: block; } 332 | html.dash .item .token { 333 | margin-left: 0; } 334 | html.dash .content-wrapper { 335 | width: auto; } 336 | html.dash #footer { 337 | position: static; } 338 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleIdentifier 6 | com.jazzy.visualeffectview 7 | CFBundleName 8 | VisualEffectView 9 | DocSetPlatformFamily 10 | visualeffectview 11 | isDashDocset 12 | 13 | dashIndexFilePath 14 | index.html 15 | isJavaScriptEnabled 16 | 17 | DashDocSetFamily 18 | dashtoc 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/Classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Classes Reference 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

VisualEffectView Docs (71% documented)

18 |
19 |
20 |
21 | 26 |
27 |
28 | 40 |
41 |
42 |
43 |

Classes

44 |

The following classes are available globally.

45 | 46 |
47 |
48 |
49 |
    50 |
  • 51 |
    52 | 53 | 54 | 55 | VisualEffectView 56 | 57 |
    58 |
    59 |
    60 |
    61 |
    62 |
    63 |

    VisualEffectView is a dynamic background blur view.

    64 | 65 | See more 66 |
    67 |
    68 |

    Declaration

    69 |
    70 |

    Swift

    71 |
    open class VisualEffectView : UIVisualEffectView
    72 | 73 |
    74 |
    75 |
    76 |
    77 |
  • 78 |
79 |
80 |
81 |
82 | 86 |
87 |
88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/Classes/VisualEffectView.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | VisualEffectView Class Reference 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 |

VisualEffectView Docs (71% documented)

18 |
19 |
20 |
21 | 26 |
27 |
28 | 40 |
41 |
42 |
43 |

VisualEffectView

44 |
45 |
46 |
open class VisualEffectView : UIVisualEffectView
47 | 48 |
49 |
50 |

VisualEffectView is a dynamic background blur view.

51 | 52 |
53 |
54 |
55 |
    56 |
  • 57 |
    58 | 59 | 60 | 61 | colorTint 62 | 63 |
    64 |
    65 |
    66 |
    67 |
    68 |
    69 |

    Tint color.

    70 | 71 |

    The default value is nil.

    72 | 73 |
    74 |
    75 |

    Declaration

    76 |
    77 |

    Swift

    78 |
    open var colorTint: UIColor? { get set }
    79 | 80 |
    81 |
    82 |
    83 |
    84 |
  • 85 |
  • 86 |
    87 | 88 | 89 | 90 | colorTintAlpha 91 | 92 |
    93 |
    94 |
    95 |
    96 |
    97 |
    98 |

    Tint color alpha.

    99 | 100 |

    The default value is 0.0.

    101 | 102 |
    103 |
    104 |

    Declaration

    105 |
    106 |

    Swift

    107 |
    open var colorTintAlpha: CGFloat { get set }
    108 | 109 |
    110 |
    111 |
    112 |
    113 |
  • 114 |
  • 115 |
    116 | 117 | 118 | 119 | blurRadius 120 | 121 |
    122 |
    123 |
    124 |
    125 |
    126 |
    127 |

    Blur radius.

    128 | 129 |

    The default value is 0.0.

    130 | 131 |
    132 |
    133 |

    Declaration

    134 |
    135 |

    Swift

    136 |
    open var blurRadius: CGFloat { get set }
    137 | 138 |
    139 |
    140 |
    141 |
    142 |
  • 143 |
  • 144 |
    145 | 146 | 147 | 148 | scale 149 | 150 |
    151 |
    152 |
    153 |
    154 |
    155 |
    156 |

    Scale factor.

    157 | 158 |

    The scale factor determines how content in the view is mapped from the logical coordinate space (measured in points) to the device coordinate space (measured in pixels).

    159 | 160 |

    The default value is 1.0.

    161 | 162 |
    163 |
    164 |

    Declaration

    165 |
    166 |

    Swift

    167 |
    open var scale: CGFloat { get set }
    168 | 169 |
    170 |
    171 |
    172 |
    173 |
  • 174 |
175 |
176 |
177 |
178 | 179 | 180 | 181 |

Initialization

182 |
183 |
184 |
    185 |
  • 186 |
    187 | 188 | 189 | 190 | init(effect:) 191 | 192 |
    193 |
    194 |
    195 |
    196 |
    197 |
    198 |

    Undocumented

    199 | 200 |
    201 |
    202 |

    Declaration

    203 |
    204 |

    Swift

    205 |
    public override init(effect: UIVisualEffect?)
    206 | 207 |
    208 |
    209 |
    210 |
    211 |
  • 212 |
  • 213 |
    214 | 215 | 216 | 217 | init(coder:) 218 | 219 |
    220 |
    221 |
    222 |
    223 |
    224 |
    225 |

    Undocumented

    226 | 227 |
    228 |
    229 |

    Declaration

    230 |
    231 |

    Swift

    232 |
    required public init?(coder aDecoder: NSCoder)
    233 | 234 |
    235 |
    236 |
    237 |
    238 |
  • 239 |
240 |
241 |
242 |
243 | 247 |
248 |
249 | 250 | 251 | 252 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | documentation 17 | 18 | 19 | documentation 20 | 21 | 22 | 71% 23 | 24 | 25 | 71% 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/css/highlight.css: -------------------------------------------------------------------------------- 1 | /* Credit to https://gist.github.com/wataru420/2048287 */ 2 | .highlight { 3 | /* Comment */ 4 | /* Error */ 5 | /* Keyword */ 6 | /* Operator */ 7 | /* Comment.Multiline */ 8 | /* Comment.Preproc */ 9 | /* Comment.Single */ 10 | /* Comment.Special */ 11 | /* Generic.Deleted */ 12 | /* Generic.Deleted.Specific */ 13 | /* Generic.Emph */ 14 | /* Generic.Error */ 15 | /* Generic.Heading */ 16 | /* Generic.Inserted */ 17 | /* Generic.Inserted.Specific */ 18 | /* Generic.Output */ 19 | /* Generic.Prompt */ 20 | /* Generic.Strong */ 21 | /* Generic.Subheading */ 22 | /* Generic.Traceback */ 23 | /* Keyword.Constant */ 24 | /* Keyword.Declaration */ 25 | /* Keyword.Pseudo */ 26 | /* Keyword.Reserved */ 27 | /* Keyword.Type */ 28 | /* Literal.Number */ 29 | /* Literal.String */ 30 | /* Name.Attribute */ 31 | /* Name.Builtin */ 32 | /* Name.Class */ 33 | /* Name.Constant */ 34 | /* Name.Entity */ 35 | /* Name.Exception */ 36 | /* Name.Function */ 37 | /* Name.Namespace */ 38 | /* Name.Tag */ 39 | /* Name.Variable */ 40 | /* Operator.Word */ 41 | /* Text.Whitespace */ 42 | /* Literal.Number.Float */ 43 | /* Literal.Number.Hex */ 44 | /* Literal.Number.Integer */ 45 | /* Literal.Number.Oct */ 46 | /* Literal.String.Backtick */ 47 | /* Literal.String.Char */ 48 | /* Literal.String.Doc */ 49 | /* Literal.String.Double */ 50 | /* Literal.String.Escape */ 51 | /* Literal.String.Heredoc */ 52 | /* Literal.String.Interpol */ 53 | /* Literal.String.Other */ 54 | /* Literal.String.Regex */ 55 | /* Literal.String.Single */ 56 | /* Literal.String.Symbol */ 57 | /* Name.Builtin.Pseudo */ 58 | /* Name.Variable.Class */ 59 | /* Name.Variable.Global */ 60 | /* Name.Variable.Instance */ 61 | /* Literal.Number.Integer.Long */ } 62 | .highlight .c { 63 | color: #999988; 64 | font-style: italic; } 65 | .highlight .err { 66 | color: #a61717; 67 | background-color: #e3d2d2; } 68 | .highlight .k { 69 | color: #000000; 70 | font-weight: bold; } 71 | .highlight .o { 72 | color: #000000; 73 | font-weight: bold; } 74 | .highlight .cm { 75 | color: #999988; 76 | font-style: italic; } 77 | .highlight .cp { 78 | color: #999999; 79 | font-weight: bold; } 80 | .highlight .c1 { 81 | color: #999988; 82 | font-style: italic; } 83 | .highlight .cs { 84 | color: #999999; 85 | font-weight: bold; 86 | font-style: italic; } 87 | .highlight .gd { 88 | color: #000000; 89 | background-color: #ffdddd; } 90 | .highlight .gd .x { 91 | color: #000000; 92 | background-color: #ffaaaa; } 93 | .highlight .ge { 94 | color: #000000; 95 | font-style: italic; } 96 | .highlight .gr { 97 | color: #aa0000; } 98 | .highlight .gh { 99 | color: #999999; } 100 | .highlight .gi { 101 | color: #000000; 102 | background-color: #ddffdd; } 103 | .highlight .gi .x { 104 | color: #000000; 105 | background-color: #aaffaa; } 106 | .highlight .go { 107 | color: #888888; } 108 | .highlight .gp { 109 | color: #555555; } 110 | .highlight .gs { 111 | font-weight: bold; } 112 | .highlight .gu { 113 | color: #aaaaaa; } 114 | .highlight .gt { 115 | color: #aa0000; } 116 | .highlight .kc { 117 | color: #000000; 118 | font-weight: bold; } 119 | .highlight .kd { 120 | color: #000000; 121 | font-weight: bold; } 122 | .highlight .kp { 123 | color: #000000; 124 | font-weight: bold; } 125 | .highlight .kr { 126 | color: #000000; 127 | font-weight: bold; } 128 | .highlight .kt { 129 | color: #445588; } 130 | .highlight .m { 131 | color: #009999; } 132 | .highlight .s { 133 | color: #d14; } 134 | .highlight .na { 135 | color: #008080; } 136 | .highlight .nb { 137 | color: #0086B3; } 138 | .highlight .nc { 139 | color: #445588; 140 | font-weight: bold; } 141 | .highlight .no { 142 | color: #008080; } 143 | .highlight .ni { 144 | color: #800080; } 145 | .highlight .ne { 146 | color: #990000; 147 | font-weight: bold; } 148 | .highlight .nf { 149 | color: #990000; } 150 | .highlight .nn { 151 | color: #555555; } 152 | .highlight .nt { 153 | color: #000080; } 154 | .highlight .nv { 155 | color: #008080; } 156 | .highlight .ow { 157 | color: #000000; 158 | font-weight: bold; } 159 | .highlight .w { 160 | color: #bbbbbb; } 161 | .highlight .mf { 162 | color: #009999; } 163 | .highlight .mh { 164 | color: #009999; } 165 | .highlight .mi { 166 | color: #009999; } 167 | .highlight .mo { 168 | color: #009999; } 169 | .highlight .sb { 170 | color: #d14; } 171 | .highlight .sc { 172 | color: #d14; } 173 | .highlight .sd { 174 | color: #d14; } 175 | .highlight .s2 { 176 | color: #d14; } 177 | .highlight .se { 178 | color: #d14; } 179 | .highlight .sh { 180 | color: #d14; } 181 | .highlight .si { 182 | color: #d14; } 183 | .highlight .sx { 184 | color: #d14; } 185 | .highlight .sr { 186 | color: #009926; } 187 | .highlight .s1 { 188 | color: #d14; } 189 | .highlight .ss { 190 | color: #990073; } 191 | .highlight .bp { 192 | color: #999999; } 193 | .highlight .vc { 194 | color: #008080; } 195 | .highlight .vg { 196 | color: #008080; } 197 | .highlight .vi { 198 | color: #008080; } 199 | .highlight .il { 200 | color: #009999; } 201 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/css/jazzy.css: -------------------------------------------------------------------------------- 1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { 2 | background: transparent; 3 | border: 0; 4 | margin: 0; 5 | outline: 0; 6 | padding: 0; 7 | vertical-align: baseline; } 8 | 9 | body { 10 | background-color: #f2f2f2; 11 | font-family: Helvetica, freesans, Arial, sans-serif; 12 | font-size: 14px; 13 | -webkit-font-smoothing: subpixel-antialiased; 14 | word-wrap: break-word; } 15 | 16 | h1, h2, h3 { 17 | margin-top: 0.8em; 18 | margin-bottom: 0.3em; 19 | font-weight: 100; 20 | color: black; } 21 | 22 | h1 { 23 | font-size: 2.5em; } 24 | 25 | h2 { 26 | font-size: 2em; 27 | border-bottom: 1px solid #e2e2e2; } 28 | 29 | h4 { 30 | font-size: 13px; 31 | line-height: 1.5; 32 | margin-top: 21px; } 33 | 34 | h5 { 35 | font-size: 1.1em; } 36 | 37 | h6 { 38 | font-size: 1.1em; 39 | color: #777; } 40 | 41 | .section-name { 42 | color: gray; 43 | display: block; 44 | font-family: Helvetica; 45 | font-size: 22px; 46 | font-weight: 100; 47 | margin-bottom: 15px; } 48 | 49 | pre, code { 50 | font: 0.95em Menlo, monospace; 51 | color: #777; 52 | word-wrap: normal; } 53 | 54 | p code, li code { 55 | background-color: #eee; 56 | padding: 2px 4px; 57 | border-radius: 4px; } 58 | 59 | a { 60 | color: #0088cc; 61 | text-decoration: none; } 62 | 63 | ul { 64 | padding-left: 15px; } 65 | 66 | li { 67 | line-height: 1.8em; } 68 | 69 | img { 70 | max-width: 100%; } 71 | 72 | blockquote { 73 | margin-left: 0; 74 | padding: 0 10px; 75 | border-left: 4px solid #ccc; } 76 | 77 | .content-wrapper { 78 | margin: 0 auto; 79 | width: 980px; } 80 | 81 | header { 82 | font-size: 0.85em; 83 | line-height: 26px; 84 | background-color: #414141; 85 | position: fixed; 86 | width: 100%; 87 | z-index: 1; } 88 | header img { 89 | padding-right: 6px; 90 | vertical-align: -4px; 91 | height: 16px; } 92 | header a { 93 | color: #fff; } 94 | header p { 95 | float: left; 96 | color: #999; } 97 | header .header-right { 98 | float: right; 99 | margin-left: 16px; } 100 | 101 | #breadcrumbs { 102 | background-color: #f2f2f2; 103 | height: 27px; 104 | padding-top: 17px; 105 | position: fixed; 106 | width: 100%; 107 | z-index: 1; 108 | margin-top: 26px; } 109 | #breadcrumbs #carat { 110 | height: 10px; 111 | margin: 0 5px; } 112 | 113 | .sidebar { 114 | background-color: #f9f9f9; 115 | border: 1px solid #e2e2e2; 116 | overflow-y: auto; 117 | overflow-x: hidden; 118 | position: fixed; 119 | top: 70px; 120 | bottom: 0; 121 | width: 230px; 122 | word-wrap: normal; } 123 | 124 | .nav-groups { 125 | list-style-type: none; 126 | background: #fff; 127 | padding-left: 0; } 128 | 129 | .nav-group-name { 130 | border-bottom: 1px solid #e2e2e2; 131 | font-size: 1.1em; 132 | font-weight: 100; 133 | padding: 15px 0 15px 20px; } 134 | .nav-group-name > a { 135 | color: #333; } 136 | 137 | .nav-group-tasks { 138 | margin-top: 5px; } 139 | 140 | .nav-group-task { 141 | font-size: 0.9em; 142 | list-style-type: none; 143 | white-space: nowrap; } 144 | .nav-group-task a { 145 | color: #888; } 146 | 147 | .main-content { 148 | background-color: #fff; 149 | border: 1px solid #e2e2e2; 150 | margin-left: 246px; 151 | position: absolute; 152 | overflow: hidden; 153 | padding-bottom: 60px; 154 | top: 70px; 155 | width: 734px; } 156 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote { 157 | margin-bottom: 1em; } 158 | .main-content p { 159 | line-height: 1.8em; } 160 | .main-content section .section:first-child { 161 | margin-top: 0; 162 | padding-top: 0; } 163 | .main-content section .task-group-section .task-group:first-of-type { 164 | padding-top: 10px; } 165 | .main-content section .task-group-section .task-group:first-of-type .section-name { 166 | padding-top: 15px; } 167 | .main-content section .heading:before { 168 | content: ""; 169 | display: block; 170 | padding-top: 70px; 171 | margin: -70px 0 0; } 172 | 173 | .section { 174 | padding: 0 25px; } 175 | 176 | .highlight { 177 | background-color: #eee; 178 | padding: 10px 12px; 179 | border: 1px solid #e2e2e2; 180 | border-radius: 4px; 181 | overflow-x: auto; } 182 | 183 | .declaration .highlight { 184 | overflow-x: initial; 185 | padding: 0 40px 40px 0; 186 | margin-bottom: -25px; 187 | background-color: transparent; 188 | border: none; } 189 | 190 | .section-name { 191 | margin: 0; 192 | margin-left: 18px; } 193 | 194 | .task-group-section { 195 | padding-left: 6px; 196 | border-top: 1px solid #e2e2e2; } 197 | 198 | .task-group { 199 | padding-top: 0px; } 200 | 201 | .task-name-container a[name]:before { 202 | content: ""; 203 | display: block; 204 | padding-top: 70px; 205 | margin: -70px 0 0; } 206 | 207 | .item { 208 | padding-top: 8px; 209 | width: 100%; 210 | list-style-type: none; } 211 | .item a[name]:before { 212 | content: ""; 213 | display: block; 214 | padding-top: 70px; 215 | margin: -70px 0 0; } 216 | .item code { 217 | background-color: transparent; 218 | padding: 0; } 219 | .item .token { 220 | padding-left: 3px; 221 | margin-left: 15px; 222 | font-size: 11.9px; } 223 | .item .declaration-note { 224 | font-size: .85em; 225 | color: gray; 226 | font-style: italic; } 227 | 228 | .pointer-container { 229 | border-bottom: 1px solid #e2e2e2; 230 | left: -23px; 231 | padding-bottom: 13px; 232 | position: relative; 233 | width: 110%; } 234 | 235 | .pointer { 236 | background: #f9f9f9; 237 | border-left: 1px solid #e2e2e2; 238 | border-top: 1px solid #e2e2e2; 239 | height: 12px; 240 | left: 21px; 241 | top: -7px; 242 | -webkit-transform: rotate(45deg); 243 | -moz-transform: rotate(45deg); 244 | -o-transform: rotate(45deg); 245 | transform: rotate(45deg); 246 | position: absolute; 247 | width: 12px; } 248 | 249 | .height-container { 250 | display: none; 251 | left: -25px; 252 | padding: 0 25px; 253 | position: relative; 254 | width: 100%; 255 | overflow: hidden; } 256 | .height-container .section { 257 | background: #f9f9f9; 258 | border-bottom: 1px solid #e2e2e2; 259 | left: -25px; 260 | position: relative; 261 | width: 100%; 262 | padding-top: 10px; 263 | padding-bottom: 5px; } 264 | 265 | .aside, .language { 266 | padding: 6px 12px; 267 | margin: 12px 0; 268 | border-left: 5px solid #dddddd; 269 | overflow-y: hidden; } 270 | .aside .aside-title, .language .aside-title { 271 | font-size: 9px; 272 | letter-spacing: 2px; 273 | text-transform: uppercase; 274 | padding-bottom: 0; 275 | margin: 0; 276 | color: #aaa; 277 | -webkit-user-select: none; } 278 | .aside p:last-child, .language p:last-child { 279 | margin-bottom: 0; } 280 | 281 | .language { 282 | border-left: 5px solid #cde9f4; } 283 | .language .aside-title { 284 | color: #4b8afb; } 285 | 286 | .aside-warning { 287 | border-left: 5px solid #ff6666; } 288 | .aside-warning .aside-title { 289 | color: #ff0000; } 290 | 291 | .graybox { 292 | border-collapse: collapse; 293 | width: 100%; } 294 | .graybox p { 295 | margin: 0; 296 | word-break: break-word; 297 | min-width: 50px; } 298 | .graybox td { 299 | border: 1px solid #e2e2e2; 300 | padding: 5px 25px 5px 10px; 301 | vertical-align: middle; } 302 | .graybox tr td:first-of-type { 303 | text-align: right; 304 | padding: 7px; 305 | vertical-align: top; 306 | word-break: normal; 307 | width: 40px; } 308 | 309 | .slightly-smaller { 310 | font-size: 0.9em; } 311 | 312 | #footer { 313 | position: absolute; 314 | bottom: 10px; 315 | margin-left: 25px; } 316 | #footer p { 317 | margin: 0; 318 | color: #aaa; 319 | font-size: 0.8em; } 320 | 321 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar { 322 | display: none; } 323 | html.dash .main-content { 324 | width: 980px; 325 | margin-left: 0; 326 | border: none; 327 | width: 100%; 328 | top: 0; 329 | padding-bottom: 0; } 330 | html.dash .height-container { 331 | display: block; } 332 | html.dash .item .token { 333 | margin-left: 0; } 334 | html.dash .content-wrapper { 335 | width: auto; } 336 | html.dash #footer { 337 | position: static; } 338 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/img/carat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/img/carat.png -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/img/dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/img/dash.png -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/img/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/img/gh.png -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | VisualEffectView Reference 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |

VisualEffectView Docs (71% documented)

17 |
18 |
19 |
20 | 25 |
26 |
27 | 39 |
40 |
41 |
42 | 43 |

VisualEffectView

44 | 45 |

Build Status 46 | Carthage compatible 47 | Language 48 | Version 49 | License

50 | 51 |

VisualEffectView is a blur effect library with tint color support. This library uses the UIVisualEffectView to generate the blur.

52 | 53 |

Demo GIF

54 | 55 |

Demo Video

56 |
$ pod try VisualEffectView
 57 | 
58 |

Requirements

59 | 60 |
    61 |
  • iOS 9.0+
  • 62 |
  • Xcode 9.0+
  • 63 |
  • Swift 5 (VisualEffectView 4.x), Swift 4 (VisualEffectView 3.x), Swift 3 (VisualEffectView 2.x), Swift 2 (VisualEffectView 1.x)
  • 64 |
65 |

Usage

66 | 67 |

Add an instance of VisualEffectView to your view.

68 |
import VisualEffectView
 69 | 
 70 | let visualEffectView = VisualEffectView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
 71 | 
 72 | // Configure the view with tint color, blur radius, etc
 73 | visualEffectView.colorTint = .redColor()
 74 | visualEffectView.colorTintAlpha = 0.2
 75 | visualEffectView.blurRadius = 10
 76 | visualEffectView.scale = 1
 77 | 
 78 | addSubview(visualEffectView)
 79 | 
80 | 81 |

Depending on the desired effect, the effect may affect content layered behind the view or content added to the visual effect view’s contentView. After you add the visual effect view to the view hierarchy, add any subviews to the contentView property of the visual effect view. Do not add subviews directly to the visual effect view itself. Refer to the UIVisualEffectView for more info.

82 | 83 |

For more examples, take a look at the example project.

84 |

Customization

85 |
var colorTint: UIColor // tint color. default is nil
 86 | var colorTintAlpha: CGFloat // tint color alpha. default is 0
 87 | var blurRadius: CGFloat // blur radius. default is 0
 88 | var scale: CGFloat // scale factor. default is 1
 89 | 
90 |

Storyboard Support

91 | 92 |

Works great with storyboards and xibs.

93 |

Installation

94 |

CocoaPods

95 | 96 |

To install with CocoaPods, simply add this in your Podfile:

97 |
use_frameworks!
 98 | pod "VisualEffectView"
 99 | 
100 |

Carthage

101 | 102 |

To install with Carthage, simply add this in your Cartfile:

103 |
github "efremidze/VisualEffectView"
104 | 
105 |

Manually

106 | 107 |
    108 |
  1. Download and drop VisualEffectView.swift in your project.
  2. 109 |
  3. Congratulations!
  4. 110 |
111 |

Communication

112 | 113 |
    114 |
  • If you found a bug, open an issue.
  • 115 |
  • If you have a feature request, open an issue.
  • 116 |
  • If you want to contribute, submit a pull request.
  • 117 |
118 |

Disclaimer

119 | 120 |

VisualEffectView utilizes a private UIKit API to do its magic. Use caution, submitting this code to the App Store adds the risk of being rejected!

121 |

Credits

122 | 123 |

https://github.com/collinhundley/APCustomBlurView

124 |

License

125 | 126 |

VisualEffectView is available under the MIT license. See the LICENSE file for more info.

127 | 128 |
129 |
130 | 134 |
135 |
136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/js/jazzy.js: -------------------------------------------------------------------------------- 1 | window.jazzy = {'docset': false} 2 | if (typeof window.dash != 'undefined') { 3 | document.documentElement.className += ' dash' 4 | window.jazzy.docset = true 5 | } 6 | if (navigator.userAgent.match(/xcode/i)) { 7 | document.documentElement.className += ' xcode' 8 | window.jazzy.docset = true 9 | } 10 | 11 | // On doc load, toggle the URL hash discussion if present 12 | $(document).ready(function() { 13 | if (!window.jazzy.docset) { 14 | var linkToHash = $('a[href="' + window.location.hash +'"]'); 15 | linkToHash.trigger("click"); 16 | } 17 | }); 18 | 19 | // On token click, toggle its discussion and animate token.marginLeft 20 | $(".token").click(function(event) { 21 | if (window.jazzy.docset) { 22 | return; 23 | } 24 | var link = $(this); 25 | var animationDuration = 300; 26 | var tokenOffset = "15px"; 27 | var original = link.css('marginLeft') == tokenOffset; 28 | link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration); 29 | $content = link.parent().parent().next(); 30 | $content.slideToggle(animationDuration); 31 | 32 | // Keeps the document from jumping to the hash. 33 | var href = $(this).attr('href'); 34 | if (history.pushState) { 35 | history.pushState({}, '', href); 36 | } else { 37 | location.hash = href; 38 | } 39 | event.preventDefault(); 40 | }); 41 | 42 | // Dumb down quotes within code blocks that delimit strings instead of quotations 43 | // https://github.com/realm/jazzy/issues/714 44 | $("code q").replaceWith(function () { 45 | return ["\"", $(this).contents(), "\""]; 46 | }); 47 | -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/search.json: -------------------------------------------------------------------------------- 1 | {"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC9colorTintSo7UIColorCSgvp":{"name":"colorTint","abstract":"

Tint color.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC14colorTintAlpha12CoreGraphics7CGFloatVvp":{"name":"colorTintAlpha","abstract":"

Tint color alpha.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC10blurRadius12CoreGraphics7CGFloatVvp":{"name":"blurRadius","abstract":"

Blur radius.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC5scale12CoreGraphics7CGFloatVvp":{"name":"scale","abstract":"

Scale factor.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/c:@M@VisualEffectView@objc(cs)VisualEffectView(im)initWithEffect:":{"name":"init(effect:)","abstract":"

Undocumented

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/c:@M@VisualEffectView@objc(cs)VisualEffectView(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html":{"name":"VisualEffectView","abstract":"

VisualEffectView is a dynamic background blur view.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"}} -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/Documents/undocumented.json: -------------------------------------------------------------------------------- 1 | { 2 | "warnings": [ 3 | { 4 | "file": "/Users/home/Documents/VisualEffectView/Sources/VisualEffectView.swift", 5 | "line": 61, 6 | "symbol": "VisualEffectView.init(effect:)", 7 | "symbol_kind": "source.lang.swift.decl.function.method.instance", 8 | "warning": "undocumented" 9 | }, 10 | { 11 | "file": "/Users/home/Documents/VisualEffectView/Sources/VisualEffectView.swift", 12 | "line": 67, 13 | "symbol": "VisualEffectView.init(coder:)", 14 | "symbol_kind": "source.lang.swift.decl.function.method.instance", 15 | "warning": "undocumented" 16 | } 17 | ], 18 | "source_directory": "/Users/home/Documents/VisualEffectView" 19 | } -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.docset/Contents/Resources/docSet.dsidx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/docsets/VisualEffectView.docset/Contents/Resources/docSet.dsidx -------------------------------------------------------------------------------- /docs/docsets/VisualEffectView.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/docsets/VisualEffectView.tgz -------------------------------------------------------------------------------- /docs/img/carat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/img/carat.png -------------------------------------------------------------------------------- /docs/img/dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/img/dash.png -------------------------------------------------------------------------------- /docs/img/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/efremidze/VisualEffectView/8cad555132c8a70ef6da453403c1113ce80ec6ff/docs/img/gh.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | VisualEffectView Reference 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 |
16 |

VisualEffectView Docs (71% documented)

17 |
18 |
19 |
20 | 25 |
26 |
27 | 39 |
40 |
41 |
42 | 43 |

VisualEffectView

44 | 45 |

Build Status 46 | Carthage compatible 47 | Language 48 | Version 49 | License

50 | 51 |

VisualEffectView is a blur effect library with tint color support. This library uses the UIVisualEffectView to generate the blur.

52 | 53 |

Demo GIF

54 | 55 |

Demo Video

56 |
$ pod try VisualEffectView
 57 | 
58 |

Requirements

59 | 60 |
    61 |
  • iOS 9.0+
  • 62 |
  • Xcode 9.0+
  • 63 |
  • Swift 5 (VisualEffectView 4.x), Swift 4 (VisualEffectView 3.x), Swift 3 (VisualEffectView 2.x), Swift 2 (VisualEffectView 1.x)
  • 64 |
65 |

Usage

66 | 67 |

Add an instance of VisualEffectView to your view.

68 |
import VisualEffectView
 69 | 
 70 | let visualEffectView = VisualEffectView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
 71 | 
 72 | // Configure the view with tint color, blur radius, etc
 73 | visualEffectView.colorTint = .redColor()
 74 | visualEffectView.colorTintAlpha = 0.2
 75 | visualEffectView.blurRadius = 10
 76 | visualEffectView.scale = 1
 77 | 
 78 | addSubview(visualEffectView)
 79 | 
80 | 81 |

Depending on the desired effect, the effect may affect content layered behind the view or content added to the visual effect view’s contentView. After you add the visual effect view to the view hierarchy, add any subviews to the contentView property of the visual effect view. Do not add subviews directly to the visual effect view itself. Refer to the UIVisualEffectView for more info.

82 | 83 |

For more examples, take a look at the example project.

84 |

Customization

85 |
var colorTint: UIColor // tint color. default is nil
 86 | var colorTintAlpha: CGFloat // tint color alpha. default is 0
 87 | var blurRadius: CGFloat // blur radius. default is 0
 88 | var scale: CGFloat // scale factor. default is 1
 89 | 
90 |

Storyboard Support

91 | 92 |

Works great with storyboards and xibs.

93 |

Installation

94 |

CocoaPods

95 | 96 |

To install with CocoaPods, simply add this in your Podfile:

97 |
use_frameworks!
 98 | pod "VisualEffectView"
 99 | 
100 |

Carthage

101 | 102 |

To install with Carthage, simply add this in your Cartfile:

103 |
github "efremidze/VisualEffectView"
104 | 
105 |

Manually

106 | 107 |
    108 |
  1. Download and drop VisualEffectView.swift in your project.
  2. 109 |
  3. Congratulations!
  4. 110 |
111 |

Communication

112 | 113 |
    114 |
  • If you found a bug, open an issue.
  • 115 |
  • If you have a feature request, open an issue.
  • 116 |
  • If you want to contribute, submit a pull request.
  • 117 |
118 |

Disclaimer

119 | 120 |

VisualEffectView utilizes a private UIKit API to do its magic. Use caution, submitting this code to the App Store adds the risk of being rejected!

121 |

Credits

122 | 123 |

https://github.com/collinhundley/APCustomBlurView

124 |

License

125 | 126 |

VisualEffectView is available under the MIT license. See the LICENSE file for more info.

127 | 128 |
129 |
130 | 134 |
135 |
136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /docs/js/jazzy.js: -------------------------------------------------------------------------------- 1 | window.jazzy = {'docset': false} 2 | if (typeof window.dash != 'undefined') { 3 | document.documentElement.className += ' dash' 4 | window.jazzy.docset = true 5 | } 6 | if (navigator.userAgent.match(/xcode/i)) { 7 | document.documentElement.className += ' xcode' 8 | window.jazzy.docset = true 9 | } 10 | 11 | // On doc load, toggle the URL hash discussion if present 12 | $(document).ready(function() { 13 | if (!window.jazzy.docset) { 14 | var linkToHash = $('a[href="' + window.location.hash +'"]'); 15 | linkToHash.trigger("click"); 16 | } 17 | }); 18 | 19 | // On token click, toggle its discussion and animate token.marginLeft 20 | $(".token").click(function(event) { 21 | if (window.jazzy.docset) { 22 | return; 23 | } 24 | var link = $(this); 25 | var animationDuration = 300; 26 | var tokenOffset = "15px"; 27 | var original = link.css('marginLeft') == tokenOffset; 28 | link.animate({'margin-left':original ? "0px" : tokenOffset}, animationDuration); 29 | $content = link.parent().parent().next(); 30 | $content.slideToggle(animationDuration); 31 | 32 | // Keeps the document from jumping to the hash. 33 | var href = $(this).attr('href'); 34 | if (history.pushState) { 35 | history.pushState({}, '', href); 36 | } else { 37 | location.hash = href; 38 | } 39 | event.preventDefault(); 40 | }); 41 | 42 | // Dumb down quotes within code blocks that delimit strings instead of quotations 43 | // https://github.com/realm/jazzy/issues/714 44 | $("code q").replaceWith(function () { 45 | return ["\"", $(this).contents(), "\""]; 46 | }); 47 | -------------------------------------------------------------------------------- /docs/search.json: -------------------------------------------------------------------------------- 1 | {"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC9colorTintSo7UIColorCSgvp":{"name":"colorTint","abstract":"

Tint color.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC14colorTintAlpha12CoreGraphics7CGFloatVvp":{"name":"colorTintAlpha","abstract":"

Tint color alpha.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC10blurRadius12CoreGraphics7CGFloatVvp":{"name":"blurRadius","abstract":"

Blur radius.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/s:16VisualEffectViewAAC5scale12CoreGraphics7CGFloatVvp":{"name":"scale","abstract":"

Scale factor.

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/c:@M@VisualEffectView@objc(cs)VisualEffectView(im)initWithEffect:":{"name":"init(effect:)","abstract":"

Undocumented

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html#/c:@M@VisualEffectView@objc(cs)VisualEffectView(im)initWithCoder:":{"name":"init(coder:)","abstract":"

Undocumented

","parent_name":"VisualEffectView"},"Classes/VisualEffectView.html":{"name":"VisualEffectView","abstract":"

VisualEffectView is a dynamic background blur view.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"}} -------------------------------------------------------------------------------- /docs/undocumented.json: -------------------------------------------------------------------------------- 1 | { 2 | "warnings": [ 3 | { 4 | "file": "/Users/home/Documents/VisualEffectView2/Sources/VisualEffectView.swift", 5 | "line": 61, 6 | "symbol": "VisualEffectView.init(effect:)", 7 | "symbol_kind": "source.lang.swift.decl.function.method.instance", 8 | "warning": "undocumented" 9 | }, 10 | { 11 | "file": "/Users/home/Documents/VisualEffectView2/Sources/VisualEffectView.swift", 12 | "line": 67, 13 | "symbol": "VisualEffectView.init(coder:)", 14 | "symbol_kind": "source.lang.swift.decl.function.method.instance", 15 | "warning": "undocumented" 16 | } 17 | ], 18 | "source_directory": "/Users/home/Documents/VisualEffectView2" 19 | } --------------------------------------------------------------------------------