{"id":28386917,"url":"https://github.com/futuretap/ftadditions","last_synced_at":"2025-06-26T15:31:04.582Z","repository":{"id":7427821,"uuid":"8764457","full_name":"futuretap/FTAdditions","owner":"futuretap","description":"Collection of view-related additions","archived":false,"fork":false,"pushed_at":"2013-03-15T11:28:08.000Z","size":110,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-30T19:47:49.388Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"matteoferla/DnD-battler","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/futuretap.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"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":"2013-03-14T00:10:26.000Z","updated_at":"2016-11-24T13:02:44.000Z","dependencies_parsed_at":"2022-08-26T20:32:36.220Z","dependency_job_id":null,"html_url":"https://github.com/futuretap/FTAdditions","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/futuretap/FTAdditions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTAdditions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTAdditions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTAdditions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTAdditions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/futuretap","download_url":"https://codeload.github.com/futuretap/FTAdditions/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futuretap%2FFTAdditions/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262094242,"owners_count":23257918,"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","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":"2025-05-30T15:39:09.001Z","updated_at":"2025-06-26T15:31:04.531Z","avatar_url":"https://github.com/futuretap.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Collection of view-related additions\n====================================\n\nUIView(FTAdditions)\n-------------------\n**explode**\n\nDumps the view hierarchy. In constrast to the standard `recursiveDescription` it displays the absolute window coordinates right in front making it easier to understand the positioning of the views.\n\n    - (void) explode\n\nSample output:\n\n\t(lldb) po [webView explode]\n\t  {{14, 154}, {290, 57}} UIWebView (\u003cUIWebView: 0x1b42cdd0; baseClass = UIWebView; frame = (14 0; 290 57); text = 'We are open, all right. W...'; opaque = NO; tag = 7; layer = \u003cCALayer: 0x12527130\u003e\u003e)\n\t  {{14, 154}, {290, 57}} -_UIWebViewScrollView:UIWebScrollView (\u003c_UIWebViewScrollView: 0x1b42cbc0; frame = (0 0; 290 57); clipsToBounds = YES; autoresize = H; gestureRecognizers = \u003cNSArray: 0x12545830\u003e; layer = \u003cCALayer: 0x1b459fa0\u003e; contentOffset: {0, 0}\u003e)\n\t   {{14, 154}, {54, 54}} --UIImageView:UIView (\u003cUIImageView: 0x1b447db0; frame = (0 0; 54 54); transform = [-1, 0, -0, -1, 0, 0]; alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1b49ec30\u003e\u003e - (null))\n\t   {{14, 154}, {54, 54}} --UIImageView:UIView (\u003cUIImageView: 0x1b4e5f30; frame = (0 0; 54 54); transform = [0, 1, -1, 0, 0, 0]; alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1250ada0\u003e\u003e - (null))\n\t   {{14, 154}, {54, 54}} --UIImageView:UIView (\u003cUIImageView: 0x125355c0; frame = (0 0; 54 54); transform = [0, -1, 1, 0, 0, 0]; alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1b4d4880\u003e\u003e - (null))\n\t   {{14, 154}, {54, 54}} --UIImageView:UIView (\u003cUIImageView: 0x1b4a7700; frame = (0 0; 54 54); alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1b462610\u003e\u003e - (null))\n\t{{-0.5, 168.5}, {30, 1}} --UIImageView:UIView (\u003cUIImageView: 0x1b4b75d0; frame = (-14.5 14.5; 30 1); transform = [0, 1, -1, 0, 0, 0]; alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1b44c380\u003e\u003e - (null))\n\t{{-0.5, 168.5}, {30, 1}} --UIImageView:UIView (\u003cUIImageView: 0x1b42fed0; frame = (-14.5 14.5; 30 1); transform = [0, -1, 1, 0, 0, 0]; alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1250e4c0\u003e\u003e - (null))\n\t\t{{14, 154}, {1, 30}} --UIImageView:UIView (\u003cUIImageView: 0x1256a420; frame = (0 0; 1 30); transform = [-1, 0, -0, -1, 0, 0]; alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1b4d8bc0\u003e\u003e - (null))\n\t\t{{14, 154}, {1, 30}} --UIImageView:UIView (\u003cUIImageView: 0x1b447740; frame = (0 0; 1 30); alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1b46a670\u003e\u003e - (null))\n\t  {{14, 181}, {290, 30}} --UIImageView:UIView (\u003cUIImageView: 0x1256bd50; frame = (0 27; 290 30); alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1252d540\u003e\u003e - (null))\n\t  {{14, 154}, {290, 30}} --UIImageView:UIView (\u003cUIImageView: 0x1b46c580; frame = (0 0; 290 30); transform = [-1, 0, -0, -1, 0, 0]; alpha = 0; hidden = YES; opaque = NO; userInteractionEnabled = NO; layer = \u003cCALayer: 0x1b49c2d0\u003e\u003e - (null))\n\t  {{14, 154}, {290, 57}} --UIWebBrowserView:UIWebDocumentView (\u003cUIWebBrowserView: 0x15857e00; frame = (0 0; 290 57); text = 'We are open, all right. W...'; opaque = NO; gestureRecognizers = \u003cNSArray: 0x1b42ba70\u003e; layer = \u003cUIWebLayer: 0x1b4cbf60\u003e\u003e)\n\t\n**path**\n\nSimilarly to `explode` there's `path` to go up the view hierarchy until the window.\n\n**recursiveSubviewsOfKind:**\n\nReturns an array of descendant views (immediate or distant subviews) that are instances of `classname` or an instance of any class that inherits from that class.\n\n    - (NSArray*)recursiveSubviewsOfKind:(Class)classname\n\n**superviewOfKind:**\n\nReturns the first view in the superview hierarchy that is an instance of `classname` or an instance of any class that inherits from that class. Returns `nil` if no matching view is found.\n\n    - (UIView*)superviewOfKind:(Class)classname\n    \n\n**ftViewController**\n\nReturns the corresponding view controller for the view by going up the responder chain.\n\n    - (UIViewController*)ftViewController\n\n\nFTButton\n--------\nA `UIButton` subclass with an additional property to define insets for the hit test area of the button. Negative insets increase the hit area. The hit area is limited by the hit area of the superview.\n\n\t@property (nonatomic) UIEdgeInsets hitTestEdgeInsets;\n\n\nFTLabel\n-------\nA `UILabel` subclass implementing two additional properties:\n\n**highlightedShadowColor**\n\n`UIColor` for the shadow in highlighted mode.\n\n**highlightedShadowOffset**\n\n`CGSize` for the shadow offset in highlighted mode.\n\n\n\nLicense\n-------\nLicensed under [CC-BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/).\n\nYou are free to share, adapt and make commercial use of the work as long as you give attribution and keep this license. To give credit, we suggest this text in the about screen or App Store description: \"Uses FTAdditions by Ortwin Gentz\", with a link to the [GitHub page](https://github.com/futuretap/FTAdditions).\n\nIf you need a different license without attribution requirement, please contact me and we can work something out.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuturetap%2Fftadditions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuturetap%2Fftadditions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuturetap%2Fftadditions/lists"}