{"id":26172081,"url":"https://github.com/tapwork/punchscrollview","last_synced_at":"2025-10-17T06:52:28.055Z","repository":{"id":716412,"uuid":"1075109","full_name":"tapwork/PunchScrollView","owner":"tapwork","description":"PunchScrollView is a iOS ScrollView framework which works like the UITableView","archived":false,"fork":false,"pushed_at":"2022-07-22T00:54:57.000Z","size":762,"stargazers_count":131,"open_issues_count":2,"forks_count":23,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-07-20T20:21:43.731Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tapwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-11-12T16:44:16.000Z","updated_at":"2021-02-26T13:26:47.000Z","dependencies_parsed_at":"2022-08-09T08:23:34.122Z","dependency_job_id":null,"html_url":"https://github.com/tapwork/PunchScrollView","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/tapwork/PunchScrollView","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FPunchScrollView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FPunchScrollView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FPunchScrollView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FPunchScrollView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tapwork","download_url":"https://codeload.github.com/tapwork/PunchScrollView/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FPunchScrollView/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266353134,"owners_count":23915898,"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-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":"2025-03-11T19:53:13.002Z","updated_at":"2025-10-17T06:52:22.995Z","avatar_url":"https://github.com/tapwork.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PunchScrollView\n[![Build Status](http://img.shields.io/travis/tapwork/PunchScrollView/master.svg?style=flat)](https://travis-ci.org/tapwork/PunchScrollView)\n[![Cocoapods Version](http://img.shields.io/cocoapods/v/PunchScrollView.svg?style=flat)](https://github.com/tapwork/PunchScrollView/blob/master/PunchScrollView.podspec)\n[![](http://img.shields.io/cocoapods/l/PunchScrollView.svg?style=flat)](https://github.com/tapwork/PunchScrollView/blob/master/LICENSE)\n[![CocoaPods Platform](http://img.shields.io/cocoapods/p/PunchScrollView.svg?style=flat)]()\n\nPunchScrollView is a little UIScrollView subclass for iOS which works like UICollectionView or UITableView Frameworks.\n\u003cbr\u003e\n\nEasy and fast implementation: delegate, dataSource methods and getter are similar to the UITableView.\nUse the benefits of the NSIndexPath pattern like you already know it from UITableView or UICollectionView.\nThis allows an easy setup in combination with Core Data.\n\n- Helpful methods, i.e. jump or scroll to a desired page\n- Avoid boilerplate code\n- Save lots of memory with automatic dequeuing\n- Comes with an Example project to demonstrate the usage\n- Infinite scrolling\n\nExample setup in the ViewController\n\n```  objective-c\nself.scrollView = [[PunchScrollView alloc] init];\nself.scrollView.delegate = self;\nself.scrollView.dataSource = self;\nself.scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;\n[self.view addSubview:self.scrollView];\n\n#pragma mark - PunchScrollViewDataSource\n\n- (NSInteger)numberOfSectionsInPunchScrollView:(PunchScrollView *)scrollView\n{\n\treturn 3;\n}\n\n- (NSInteger)punchscrollView:(PunchScrollView *)scrollView numberOfPagesInSection:(NSInteger)section\n{\n\treturn 3;\n}\n\n- (UIView*)punchScrollView:(PunchScrollView*)scrollView viewForPageAtIndexPath:(NSIndexPath *)indexPath\n{\n\tExamplePageView *page = (ExamplePageView*)[scrollView dequeueRecycledPage];\n\tif (page == nil)\n\t{\n      //\n      // You could also use PunchScrollview as gallery scrollview - just change the size of the desired view\n      //\n\t\tpage = [[ExamplePageView alloc] initWithFrame:self.view.bounds];\n        page.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;\n\t}\n\n\tpage.titleLabel.text = [NSString stringWithFormat:@\"Page %@ in section %@\", @(indexPath.row), @(indexPath.section)];\n\n\treturn page;\n}\n\n\n```\n#### Issues\n* Right now there is an issue when turning to landscape since iOS 8 with infinite scrolling (only in rare cases). Layouting is not right for the visible page.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapwork%2Fpunchscrollview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftapwork%2Fpunchscrollview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapwork%2Fpunchscrollview/lists"}