{"id":20105091,"url":"https://github.com/jdee/violation","last_synced_at":"2025-08-26T12:06:49.004Z","repository":{"id":18346752,"uuid":"21526555","full_name":"jdee/violation","owner":"jdee","description":"Violation for iOS","archived":false,"fork":false,"pushed_at":"2020-08-22T14:45:03.000Z","size":458,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-02T17:47:49.404Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdee.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-05T19:17:09.000Z","updated_at":"2020-08-22T14:45:05.000Z","dependencies_parsed_at":"2022-07-26T22:02:01.941Z","dependency_job_id":null,"html_url":"https://github.com/jdee/violation","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jdee/violation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdee%2Fviolation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdee%2Fviolation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdee%2Fviolation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdee%2Fviolation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdee","download_url":"https://codeload.github.com/jdee/violation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdee%2Fviolation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272219142,"owners_count":24894355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T17:45:49.192Z","updated_at":"2025-08-26T12:06:48.976Z","avatar_url":"https://github.com/jdee.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Violation\n=========\n\n```\nNOTE: This software is currently unreleased. Look for a release when Xcode 6 and iOS 8 near\nproduction.\n```\n\nViolation is a framework comprising a custom gesture\nrecognizer for iOS, a custom control that uses it and a customizable, general-purpose button.\n\nThe word _violation_ is a loaded term in computing, referring to a runtime error or the failure to\nobserve the terms of a license. It's short and memorable, and happily it does not conflict with other\nsoftware companies or products.\n\nSee [iOS Knob Control and Violation](https://gist.github.com/jdee/f3eeadeb0eaec725edd8).\n\nRequirements\n============\n\nViolation is an iOS framework you can build and import as an external dependency to any iOS project.\nBuilding iOS frameworks is new in Xcode 6. You cannot build Violation directly with Xcode 5 or lower.\nXcode6-Beta6 is required.\n\nViolation requires iOS 6.0 or higher.\n\nSwift requires iOS 7.0 or higher. Use the Objective-C demo on an iOS 6 device.\n\nQuick demo\n==========\n\n1. Open the Violation.xcworkspace file in this directory using Xcode6, either by double-clicking\nthe file or using File \u003e Open in Xcode. The workspace contains projects to build the framework\nand two demos.\n2. In the upper left-hand corner of Xcode, select the app you want to run (ViolationDemo-ObjC\nor ViolationDemo-Swift; the contents of the apps are the same) and a device or simulator to run on. \nUnlock the device if it's locked.\n3. Click the triangular run button to the left. The framework and app will be built and run on the\ndevice or simulator.\n\nIn this folder\n==============\n\nThere are three subdirectories here that contain Xcode projects. Violation contains the project\nto build the framework. ViolationDemo-ObjC and ViolationDemo-Swift contain two demo apps. Each app has\nthe same content; they are just examples of use in two different languages. The two demo projects share\nthe same asset catalog, Images.xcassets in this directory. Violation.xcworkspace is used to build the\nframework and both the demo apps in the right order to satisfy dependencies.\n\nThe IOSKnobControl subdirectory contains an external dependency for the demo apps. See\n[iOS Knob Control and Violation](https://gist.github.com/jdee/f3eeadeb0eaec725edd8).\n\nThe doc subdirectory contains HTML documentation generated from the public framework headers using\nDoxygen in doc/html (see doc/html/index.html).\n\nThe ChangeLog contains the project's release history, not a record of individual changes (for which see\nthe commit history).\n\nThe project in the Violation subdirectory is a standalone framework project that can be built\nseparately, using command-line tools or Xcode. Each of the demo projects depends on Violation.framework,\nthe product of the framework project in the Violation subdirectory. The easiest way to build and run the\ndemo apps is using the Xcode workspace in this directory, Violation.xcworkspace. See Quick Start above.\n\nStatic library\n==============\n\nCurrently, the framework is built as a static library. It should be possible instead to build a dynamic\nlibrary, but there are issues, including possibly bugs in Xcode and almost certainly driver error. For\nnow, the static library approach works in the demo apps and a separate app as well. Stay tuned for more\ninfo.\n\nUnfortunately, this means that Violation.framework cannot dynamically pull in its dependencies: UIKit,\nCoreGraphics and CoreText. These dynamically-linked frameworks must be explicitly included in your\napp's dependencies. UIKit and CoreGraphics are very common. You will likely have to add CoreText to\nyour app project, unless you are already using it.\n\nOther versions of Xcode\n=======================\n\nIt may be possible to use Violation with other versions of Xcode, in case you cannot use Xcode6-Beta6\nfor any reason. But these methods are not yet well tested and may lead to further issues that have not\nyet been discovered. Please use Xcode6-Beta6 if possible, but if you cannot for some reason, here are\nsome workarounds.\n\nXcode5 (non-framework)\n----------------------\n\nYou can still use Violation, but not as a framework. You can also simply add all the .h and .m files\nfrom the Violation/Violation subdirectory to your project. Be sure to put them in a subdirectory\ncalled Violation and `#import \u003cViolation/Violation.h\u003e`. `@import Violation;` will not work, since\nViolation is not a framework or a module here. The individual source files will be compiled\ninto your app, much like using a static library. In this case, you should be sure to\n`#define VIOLATION_NO_FRAMEWORK` when building. This suppresses some framework-related symbol\nreferences that can otherwise cause a link error. This method should work with any version of Xcode,\nbut the framework should be preferred if you are able to build it.\n\nRelease builds\n==============\n\nIt may be possible to perform Release builds to package Violation as a binary framework for direct \ninclusion as a dependency of other projects, but there may still be issues. Stay tuned for more \ninformation on this topic, and simply include Violation.xcodeproj in your project workspace for now.\nArchiving your app for a Release build in this configuration should work fine.\n\nAPI documentation\n=================\n\nThe header (.h) files from the Violation framework contain extensive documentation that can be\nprocessed by a program like Doxygen or AppleDoc to produce HTML documentation. The HTML documentation\ngenerated by Doxygen using the Doxyfile in the top directory is included here. See\ndoc/html/index.html.\n\nLicense\n=======\n\nThe software and media here are available under\n[The BSD 3-Clause License](http://opensource.org/licenses/BSD-3-Clause):\n\n```\nViolation\nCopyright (c) 2014, Jimmy Dee\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted\nprovided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this list of conditions\nand the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions\nand the following disclaimer in the documentation and/or other materials provided with the\ndistribution.\n\n3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse\nor promote products derived from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\nOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdee%2Fviolation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdee%2Fviolation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdee%2Fviolation/lists"}