{"id":21374030,"url":"https://github.com/Coder-TanJX/JXPageControl","last_synced_at":"2025-07-13T08:32:10.941Z","repository":{"id":39897741,"uuid":"196712092","full_name":"Coder-TanJX/JXPageControl","owner":"Coder-TanJX","description":"🚀🚀🚀 自定义pageControl指示器, 支持多种动画, 自定义布局.","archived":false,"fork":false,"pushed_at":"2022-10-28T07:51:19.000Z","size":2089,"stargazers_count":463,"open_issues_count":6,"forks_count":62,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-14T13:11:34.295Z","etag":null,"topics":["banner","cycle","objective-c","pagecontrol","pager","swift","uipagecontrol"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/Coder-TanJX.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":"2019-07-13T11:06:29.000Z","updated_at":"2024-11-07T07:45:42.000Z","dependencies_parsed_at":"2022-08-20T20:50:21.548Z","dependency_job_id":null,"html_url":"https://github.com/Coder-TanJX/JXPageControl","commit_stats":null,"previous_names":["code-tanjx/jxpagecontrol"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coder-TanJX%2FJXPageControl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coder-TanJX%2FJXPageControl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coder-TanJX%2FJXPageControl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coder-TanJX%2FJXPageControl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Coder-TanJX","download_url":"https://codeload.github.com/Coder-TanJX/JXPageControl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225868589,"owners_count":17537079,"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":["banner","cycle","objective-c","pagecontrol","pager","swift","uipagecontrol"],"created_at":"2024-11-22T08:29:38.793Z","updated_at":"2024-11-22T08:30:07.543Z","avatar_url":"https://github.com/Coder-TanJX.png","language":"Swift","funding_links":[],"categories":["OOM-Leaks-Crash"],"sub_categories":["PageControl"],"readme":"# JXPageControl\n\n[![CI Status](https://img.shields.io/travis/bboyXFX/JXPageControl.svg?style=flat)](https://travis-ci.org/bboyXFX/JXPageControl)\n[![Version](https://img.shields.io/cocoapods/v/JXPageControl.svg?style=flat)](https://cocoapods.org/pods/JXPageControl)\n[![License](https://img.shields.io/cocoapods/l/JXPageControl.svg?style=flat)](https://cocoapods.org/pods/JXPageControl)\n[![Platform](https://img.shields.io/cocoapods/p/JXPageControl.svg?style=flat)](https://cocoapods.org/pods/JXPageControl)\n\n\n##### (JXPageControl supports multiple animation transformations, content layout transformations, and Xib layouts ) \n\n---\n\n##### \n\n* Development environment: Xcode 7 \n* Running condition: iOS(8.0+) \n* Open source framework ：[github地址](https://github.com/Code-TanJX/JXPageControl)\n* [ Chinese is introduced [ 中文介绍 ]](https://blog.csdn.net/TanJiaXiang/article/details/95796616)\n\n\u0026nbsp;\n\n（If there is any problem, you can leave a message, welcome to study together, welcome star ）\n\n--- \n### Installation\nTo install, simply add the following code to your Podfile   : \n\n```ruby\n\nplatform :ios, '8.0'\n\ntarget 'TargetName' do\n    pod 'JXPageControl'\nend\n\n```\n\n---\n\n### The UI effect \n\nJXPageControlChameleon          |   JXPageControlExchange     |        JXPageControlFill \n:-: | :-: | :-:   \n\u003cimg src=\"Images/chamelon.gif\" width=\"144\" height=\"88\"\u003e | \u003cimg src=\"Images/exchange.gif\" width=\"260\" height=\"124\"\u003e | \u003cimg src=\"Images/fill.gif\" width=\"128\" height=\"104\"\u003e\n\n\n\u0026nbsp;\n\nJXPageControlJump | JXPageControlScale\n:-: | :-: \n\u003cimg src=\"Images/jump.gif\" width=\"128\" height=\"328\"\u003e | \u003cimg src=\"Images/scare.gif\" width=\"128\" height=\"300\"\u003e\n\n---\n\n### Frame set \n* Common   Framework common class files \n* Jump  - Jump animation effects class file  \n* Transform  - Transition animation class file\n\n---\n\n---\n\n####  JXPageControl introduction [ JXPageControl 介绍 ]\n\nJXPageControl ADAPTS to Swift and objective-c\n\n\u0026nbsp;\n\n* JXPageControlBase -   Base class for all pageControl \n* JXPageControlType -  All pageControl protocols, it provides a number of custom apis for developers to use \n\n\u0026nbsp;\n\n######  JXPageControlType - provides - API \n\n\u0026nbsp;\n\n* numberOfPages ---\u003e  Number of indicators. \n* currentPage ---\u003e  Current indicator page number. \n* progress ---\u003e  Current indicator page numbering process. \n* hidesForSinglePage ---\u003e Whether to hide when there is only one indicator. \n* inactiveColor ---\u003e  Inactive indicator color\n* activeColor ---\u003e Active indicator color  \n* inactiveSize ---\u003e  Inactive indicator size \n* activeSize ---\u003e   Active indicator size \n* indicatorSize ---\u003e  All indicator sizes \n* columnSpacing ---\u003e  Horizontal distance between indicators \n* contentAlignment ---\u003e  Content layout location (note that this property is easy to use!!!!! )\n* contentMode ---\u003e  Content layout location, and support for transformation in Xib, real-time view of location changes (note that this property is very useful!!!!! )\n* isInactiveHollow ---\u003e Whether the inactive indicator is a hollow pattern \n* isActiveHollow ---\u003e Whether the active indicator is a hollow pattern \n* reload() ---\u003e Refresh data/UI \n\n###### Be careful  : \nJXPageControl also provides some APIs for non-JXPageControlType. You can view it in the specific classes you use \n\n\u0026nbsp;\n\n---\n####  JXPageControl uses  :\n\n\u0026nbsp;\n\n### Example 1\n\n* Use (xib, storyboard for properties and layout Settings!!! )  \n* Note that the module should select JXPageControl, otherwise it will not show up and the call will report an error. \n* ContentMode can be set in View to change content location \n\n\u0026nbsp;\n\n\n\u003cimg src=\"Images/Xib_01.png\" width=\"825\" height=\"805\"\u003e\n\n---\n\n\u003cimg src=\"Images/Xib_02.png\" width=\"810\" height=\"750\"\u003e\n\n\n### Example 2\n\n*  Write it in pure code\n\n```\n\nimport JXPageControl\n\nclass ChamelonVC: UIViewController {\n\nlazy var codePageControl: JXPageControlJump = {\nlet pageControl = JXPageControlJump(frame: CGRect(x: 0,\ny: 0,\nwidth: UIScreen.main.bounds.width,\nheight: 30))\npageControl.numberOfPages = 4\n\n// JXPageControlType: default property\n//        pageControl.currentPage = 0\n//        pageControl.progress = 0.0\n//        pageControl.hidesForSinglePage = false\n//        pageControl.inactiveColor = UIColor.white.withAlphaComponent(0.5)\n//        pageControl.activeColor = UIColor.white\n//        pageControl.inactiveSize = CGSize(width: 10, height: 10)\n//        pageControl.activeSize = CGSize(width: 10, height: 10)\n//        pageControl.inactiveSize = CGSize(width: 10, height: 10)\n//        pageControl.columnSpacing = 10\n//        pageControl.contentAlignment = JXPageControlAlignment(.center,\n//                                                              .center)\n//        pageControl.contentMode = .center\n//        pageControl.isInactiveHollow = false\n//        pageControl.isActiveHollow = false\n\n// JXPageControlJump: default \"custom property\"\npageControl.isAnimation  = true\npageControl.isFlexible = true\n\nreturn pageControl\n}()\n\noverride func viewDidLoad() {\nsuper.viewDidLoad()\nview.addSubview(codePageControl)\n}\n\n}\n\nextension ChamelonVC: UIScrollViewDelegate {\nfunc scrollViewDidScroll(_ scrollView: UIScrollView) {\nlet progress = scrollView.contentOffset.x / scrollView.bounds.width\nlet currentPage = Int(round(progress))\n\n//  Mode one \ncodePageControl.progress = progress\n\n// Mode two \n//        codePageControl.currentPagev = currentPage\n\n}\n\n}\n\n```\n\n```\n\n\n```\n\n### Example 2 and so on ...\n\n```\n\nimport JXPageControl\n...\n\n```\n\n### [The Demo address](https://github.com/Code-TanJX/JXPageControl)\n\n## Author\n\nCode-TanJX, Code_TanJX@163.com\n\n## License\n\nJXPageControl is available under the MIT license. See the LICENSE file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoder-TanJX%2FJXPageControl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCoder-TanJX%2FJXPageControl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCoder-TanJX%2FJXPageControl/lists"}