Compare commits
705 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4b59afcfd0 | |||
| f91fc75fd4 | |||
| a8408a6315 | |||
| 0ea113c956 | |||
| f7b85b4000 | |||
| e22047ab4f | |||
| 02c278c9c0 | |||
| 1f000373b6 | |||
| 73260d2323 | |||
| b1a78f294e | |||
| 88e3a851c0 | |||
| 7efd18fab2 | |||
| 0e51e4455e | |||
| 2a3bd2e8b3 | |||
| 63ee607e9a | |||
| cbcc93fa6e | |||
| b42589499e | |||
| e2231540ef | |||
| 9dfe72b24b | |||
| 7138375a8b | |||
| 4191ea490c | |||
| 56f7a464a2 | |||
| 0d86293bf3 | |||
| 2f2e1a6fbf | |||
| a4b0059723 | |||
| 110378832a | |||
| 324ee383b8 | |||
| 0482f6bff9 | |||
| 0b3397e362 | |||
| 62b277cda1 | |||
| 4558aa2785 | |||
| fd9137b5d2 | |||
| 94712c97c4 | |||
| 9aa50fb3b7 | |||
| 379ed11022 | |||
| 41d8e96209 | |||
| 9113395acc | |||
| 9981a0f626 | |||
| 21afc13fe2 | |||
| 554cd4e12e | |||
| d86484c867 | |||
| 7579e5440f | |||
| d36536bec1 | |||
| c2af1380f1 | |||
| 7fa1e4901b | |||
| f1a4941019 | |||
| 190f53e8cd | |||
| 1947888141 | |||
| 6d684de2cf | |||
| e80dfaa619 | |||
| b1d4466f2d | |||
| 281e778b5b | |||
| 1df35a550c | |||
| 5115d1ff13 | |||
| e8550dfc75 | |||
| 2425fc9fc2 | |||
| 9a00d6d2d0 | |||
| 869b7c183b | |||
| dcf425c3c8 | |||
| 4ce77c93f6 | |||
| 0b09f7e5c7 | |||
| b14136abc6 | |||
| 0cad910faf | |||
| 67cdc3fc7d | |||
| 11854d0b45 | |||
| 7fceef8d57 | |||
| 1730cf47f6 | |||
| 036ad8d579 | |||
| 59275ec849 | |||
| 7729c31831 | |||
| 711760bdc6 | |||
| 2ab54b6476 | |||
| 1b5d1b4d12 | |||
| 97f98ad748 | |||
| 3cbf0c9f60 | |||
| 15e149c26d | |||
| b5015729fa | |||
| 1084a27bce | |||
| fc3bc0241b | |||
| 882ff1fb70 | |||
| 7aa4acc71b | |||
| a700cfea7b | |||
| 13b6aa0f77 | |||
| 25f29a547e | |||
| dfe809a059 | |||
| 1b3b9c7cd0 | |||
| 9a0a5c3f95 | |||
| 27e9f73425 | |||
| 8bde7919d4 | |||
| 91b53bfaa9 | |||
| f88cf5b47f | |||
| 3214a3a98b | |||
| 28e44a75b6 | |||
| d9ee474181 | |||
| d4b1442399 | |||
| 54a1444427 | |||
| fcf0c28bdf | |||
| 1fd1705e14 | |||
| c6eefa49a3 | |||
| ec6d6b8a12 | |||
| c09a875cdf | |||
| 0fffa0fef0 | |||
| 3502728fc1 | |||
| 851ed2ff82 | |||
| 5b18a92e84 | |||
| dc8414ee34 | |||
| 438d7cc1e8 | |||
| 6588ee8ce7 | |||
| b5fdd188b8 | |||
| fa6f0d9b8b | |||
| f46c14cc8b | |||
| 7890ee1c33 | |||
| 41f0a68619 | |||
| f83677a155 | |||
| 12e5199f44 | |||
| f6769a98cd | |||
| f7a6a88a13 | |||
| b38cb29502 | |||
| 295566e016 | |||
| 4213bbac99 | |||
| 7f79637885 | |||
| 7ae5523d2d | |||
| 1e661f83fd | |||
| 64836f64a8 | |||
| 8da79ec050 | |||
| 4fe580cf76 | |||
| d915e3adbf | |||
| b150f05791 | |||
| 7e01dfda4d | |||
| 51079d876a | |||
| f2a99cb2e7 | |||
| bf1c43b9dc | |||
| 1b75ad18f9 | |||
| bdfb003492 | |||
| 9a58e4d102 | |||
| 84725316fe | |||
| 1065164ab9 | |||
| f45db25cac | |||
| 27f5809a01 | |||
| 02754073dc | |||
| 39406280d6 | |||
| 0c27c7b2c5 | |||
| 5a1e9f794a | |||
| 5c1d0e2886 | |||
| 90939e2088 | |||
| cee7e8fcc4 | |||
| 4796e260e4 | |||
| bdad9b2f84 | |||
| 8e4ebf904a | |||
| 04704c2249 | |||
| 507879d7e2 | |||
| f71f0c1ce6 | |||
| 6575de09ca | |||
| ffdb56155b | |||
| da962ae7d3 | |||
| fa42395d07 | |||
| e2f145fd59 | |||
| 7dbe5d89a1 | |||
| c844262d2a | |||
| 6dc84ce531 | |||
| f042020e8b | |||
| 9fb45407a8 | |||
| 75442c6f86 | |||
| 07ce0ca79a | |||
| 6e5a7f4878 | |||
| 41a8ab3047 | |||
| ac01ced1b3 | |||
| b9c7c8059b | |||
| 7c8634ae85 | |||
| 8e454f5b80 | |||
| 7ccdb55301 | |||
| 1849ccfada | |||
| aab2e64d84 | |||
| 4c201999dc | |||
| e5b05c528f | |||
| d82d3948ad | |||
| 464c2b2eed | |||
| 14f12a3462 | |||
| 91cbad734a | |||
| 22a5fed82b | |||
| d2ed6b895a | |||
| 9f18f751a3 | |||
| 9d5c4f7a87 | |||
| dcd145fcd4 | |||
| c01cc29d13 | |||
| 0e81514bd9 | |||
| 9d4d4f8dc9 | |||
| 6e5358a186 | |||
| 5223309c4a | |||
| cddba280df | |||
| 397c061156 | |||
| ea7d2ea486 | |||
| 817858621c | |||
| 2b4e95a9a5 | |||
| 1b2b74515a | |||
| 0e4a5b9155 | |||
| b0d1ae7823 | |||
| 4bef62e636 | |||
| 3677eef5fd | |||
| c5d075523c | |||
| 18925f7ac8 | |||
| a6faa8446c | |||
| 9376a08e5f | |||
| 6f9a486a97 | |||
| 00b3d7bb71 | |||
| 415ccfa53b | |||
| 31b82d2ac8 | |||
| 339c3d3f6d | |||
| d9caf951e4 | |||
| b828f6c1bb | |||
| 7d48d58aa5 | |||
| 364e860ef1 | |||
| b8ff9284d8 | |||
| 6371676229 | |||
| 60be24efe9 | |||
| 8b22cb297e | |||
| e1d27e5b32 | |||
| aef0044cad | |||
| 1418007970 | |||
| 80bc1b6f8d | |||
| 45cb459b19 | |||
| ae891874c0 | |||
| 39bb4dd5fd | |||
| 20e08c28b0 | |||
| 8f24b1580b | |||
| d3a9681c89 | |||
| c4163bfa22 | |||
| 9fb202024c | |||
| fee5b3aa3b | |||
| ee13012a00 | |||
| 0d7fcb1c09 | |||
| 0c180050ae | |||
| d3de69297b | |||
| e19835eb5c | |||
| 5fa61ecfda | |||
| 8654214689 | |||
| 660c14c0c5 | |||
| 3f110cf6e8 | |||
| da21fa0753 | |||
| e683e41b18 | |||
| 9178b5de30 | |||
| 76c35e7bf2 | |||
| 1aadd57bf6 | |||
| 5f08256195 | |||
| 3c855c53e7 | |||
| dc2b0d1917 | |||
| c70271945c | |||
| cffe26f16d | |||
| 6416a83f2d | |||
| e2818bf1e0 | |||
| e39b639eb8 | |||
| 01de7cbca3 | |||
| 7fd24b12b6 | |||
| 36ae33396e | |||
| bc752f68e3 | |||
| 6e9f80c2b2 | |||
| af42cacea5 | |||
| 2799f8dcb3 | |||
| d5ef98af69 | |||
| 969aecc2b8 | |||
| a08b7c44ed | |||
| 8be46892c2 | |||
| abf27ad83a | |||
| aa0a7dc0bd | |||
| 234db75e47 | |||
| b6b96bf7b6 | |||
| 85b146bcc5 | |||
| 89f9280ea0 | |||
| 0880b24d70 | |||
| a2eaad2632 | |||
| 4fa1dcaabe | |||
| 2830c8434c | |||
| 3a841f5469 | |||
| 315f4cb1b1 | |||
| 95e2fbe7ac | |||
| 258814b91c | |||
| f98a5cbfdd | |||
| 84d5f87117 | |||
| 78863615be | |||
| 711cfe6dd1 | |||
| 7c255344f3 | |||
| 73601827d5 | |||
| d0a6325812 | |||
| df19e0beaa | |||
| 992081a83a | |||
| 56f5d6cfe5 | |||
| 0cd7655038 | |||
| 20b36f2196 | |||
| e9d0e983aa | |||
| 285397f0f8 | |||
| 64ed464d4e | |||
| 6a917271a2 | |||
| 08f5baea17 | |||
| c1320efcdc | |||
| 9dff44c119 | |||
| 3928fc78af | |||
| 15a0ab94c3 | |||
| b857975267 | |||
| fc53e4028b | |||
| 3e7f060ea3 | |||
| 852b6db02a | |||
| 78be129772 | |||
| bc016e5122 | |||
| baee1270c7 | |||
| 637ebd1bfb | |||
| 137d0b06b8 | |||
| 2a7e00b41f | |||
| 2de368dca3 | |||
| be33029b41 | |||
| bab121b144 | |||
| dd6201ee62 | |||
| c6679a2d9c | |||
| ef5be77211 | |||
| fc10cd4a5a | |||
| ba2f390f42 | |||
| 26c3baa27a | |||
| 8a59006349 | |||
| 9c261179af | |||
| 3ef5bb448a | |||
| 6d4d5e0bf2 | |||
| cd1194abcf | |||
| 435dc04ac6 | |||
| 16298049ce | |||
| b6651996af | |||
| fc2de1c9f2 | |||
| d76614e189 | |||
| d83dbe25de | |||
| d8c3823dc8 | |||
| 09f07e5ad4 | |||
| 0fa58c95da | |||
| 6f06307cdc | |||
| c5d3761a3b | |||
| 58f44727c1 | |||
| d87be5e14a | |||
| 83fbbaa692 | |||
| 5f86fd8c5e | |||
| e900ed285c | |||
| 6f651a16e6 | |||
| f57858a3f0 | |||
| f693e464d0 | |||
| 9ed1e1c810 | |||
| 658f15c909 | |||
| 29936fe567 | |||
| 589c62cc70 | |||
| ecdef51091 | |||
| 5751b51be0 | |||
| 5f1d632c69 | |||
| 20e868dc73 | |||
| df20863d46 | |||
| 03c963384e | |||
| 607dda9bfa | |||
| 6abc2ceac7 | |||
| 44fa6f7ffd | |||
| 8d10457a32 | |||
| c7b864a70e | |||
| 4067b45867 | |||
| 61e2ac74ce | |||
| 6f60e586e1 | |||
| e212023fba | |||
| cef5739cba | |||
| 2e85d8e96c | |||
| fc9bbbce6d | |||
| f4ddfdebb1 | |||
| f3ff0ea70e | |||
| 142ba768fd | |||
| 2823852202 | |||
| 4cb995d75f | |||
| b3c84a225b | |||
| bfa5126933 | |||
| 7288ad922a | |||
| fd857fe8d0 | |||
| 4c60232840 | |||
| 542ef6ab1b | |||
| 4889fcf456 | |||
| a8eb197c2b | |||
| d0ac9ab1b3 | |||
| 0446b473fd | |||
| 64a1cc8d31 | |||
| e3c62a4881 | |||
| 2d5e85a29e | |||
| 4f56f20b93 | |||
| a8e3e92e1d | |||
| 3ab4180435 | |||
| 980b0834c6 | |||
| 728512924a | |||
| 80ba1766d8 | |||
| fe9f9bbbc7 | |||
| 1de6c5c81d | |||
| 56b7adcadf | |||
| 960620a11d | |||
| ada49ffabf | |||
| 17d043c927 | |||
| ae9fca8bde | |||
| 960122f417 | |||
| 309b610fa1 | |||
| 708ef33549 | |||
| af26d5d625 | |||
| 8fa67931ac | |||
| 1bced3c36e | |||
| 3ad134a1a8 | |||
| 719af8d986 | |||
| b15793b095 | |||
| 195f7bf367 | |||
| cae5974c85 | |||
| 42d4414f0b | |||
| a4f98600f3 | |||
| 8837ec2ca0 | |||
| 5d2418eea8 | |||
| e306724b1e | |||
| e55361cb37 | |||
| f17426df73 | |||
| 5e98bfddb0 | |||
| ad661d144b | |||
| 9c216667cc | |||
| 391e998023 | |||
| 9c9cd84ddc | |||
| f96c0d311b | |||
| a3cc3d7cd6 | |||
| 2ec6317f58 | |||
| 0fc6180eda | |||
| 47209efc93 | |||
| 6c842088a7 | |||
| 2997237038 | |||
| 1340db7507 | |||
| e16bbd770d | |||
| 208b6e7c4f | |||
| a2b880dfce | |||
| 273728b571 | |||
| 0a071b0b36 | |||
| d3e3b346fc | |||
| 2a455f5768 | |||
| c38f3b0d9a | |||
| 522be7886a | |||
| 5e19daf9a1 | |||
| ab7bf0d0c6 | |||
| fc3c3eee9d | |||
| 9cf7c6df1b | |||
| e9fb4dd9b7 | |||
| 36a3b74dc1 | |||
| 3b473e51c6 | |||
| 133d94966c | |||
| 442b5d717e | |||
| 5ab3127fc6 | |||
| e5e9636547 | |||
| c5788b3663 | |||
| 1c138d254b | |||
| fa8eaa5536 | |||
| 6f0c5d711b | |||
| eb09282ed1 | |||
| 0305685633 | |||
| 49b0884b39 | |||
| f7b31cd7f0 | |||
| 653090cd9d | |||
| e18efa284d | |||
| 3baec7a016 | |||
| a80d64c7f0 | |||
| 9349504aa0 | |||
| 6ec1ac22f9 | |||
| 57c564bc75 | |||
| 87a9494b81 | |||
| b67b59b1af | |||
| a72975ae24 | |||
| 652effc483 | |||
| bd52f70cdc | |||
| e9a3bfea44 | |||
| 5d4f2db6d9 | |||
| c82dc6d397 | |||
| ba11726305 | |||
| bd409473d2 | |||
| a01f93e58c | |||
| a430feabe7 | |||
| 63e4ef774c | |||
| 3ade16bc4f | |||
| f77b16a58a | |||
| e912003d59 | |||
| c0ed899df4 | |||
| 3a5a075d24 | |||
| f322958594 | |||
| a76fbd0588 | |||
| a2087934b6 | |||
| 2295430b6e | |||
| 5af2a1599d | |||
| 5423b36824 | |||
| 2f213ea2f7 | |||
| 786997719c | |||
| ac014aca48 | |||
| 4ced225c3e | |||
| 25704162db | |||
| 20b390598f | |||
| 90a1db0351 | |||
| d712fc940a | |||
| 9c1ff6a818 | |||
| d51f333199 | |||
| d69a1e2623 | |||
| 8c1322ae65 | |||
| 85b71c122f | |||
| 13123e930f | |||
| 78989f3905 | |||
| ba0b223b53 | |||
| dc7740478d | |||
| 47b023f1ee | |||
| b65e123967 | |||
| 1c257548bb | |||
| 0fd8f337c6 | |||
| 2db9dfb331 | |||
| 30576eea46 | |||
| 2dc4fbd1e8 | |||
| 4cc674787b | |||
| 0eaf84e7c6 | |||
| 0f9310ab4e | |||
| cad9885210 | |||
| f18797a890 | |||
| 6c9230b717 | |||
| 02d7c68868 | |||
| 828acd09a4 | |||
| 3b401852e0 | |||
| 1dde93cca1 | |||
| bb644cbdd5 | |||
| f4832d7043 | |||
| 8db41bc3c8 | |||
| 852970ed56 | |||
| fc73174fd2 | |||
| 41ed56278a | |||
| f1e34fb5b4 | |||
| 905445a93b | |||
| aab4707008 | |||
| 3da95fb53b | |||
| c0b8a324e4 | |||
| 309e15e695 | |||
| 47fd0d2b6c | |||
| fb11226295 | |||
| d8c225aa01 | |||
| 7e1abf7131 | |||
| bf43750f22 | |||
| ffe4226930 | |||
| c891057f2f | |||
| 69172a340a | |||
| 537115091d | |||
| f0f1170b39 | |||
| 7688cff430 | |||
| 7bd4da2f6d | |||
| 502367b7d8 | |||
| f3eaca1b35 | |||
| 01212239dd | |||
| 220686ff92 | |||
| 111fd82479 | |||
| 50e089f771 | |||
| e185843c3e | |||
| ba658e62b0 | |||
| 2e1c90067d | |||
| b183efc679 | |||
| e38d2e8cc8 | |||
| 5a63246c08 | |||
| 07452eae30 | |||
| 8c94b24ab9 | |||
| a77c63d8ad | |||
| ba3746ff87 | |||
| 06d35730a0 | |||
| 941094310f | |||
| 27cb5789d2 | |||
| c4b8af765f | |||
| 7b25af21cb | |||
| 3915f8de1d | |||
| 36abd7b5b2 | |||
| 3c49be3f24 | |||
| 9f6333deb0 | |||
| 37e0dad366 | |||
| 6f3d35cc15 | |||
| a81b15a575 | |||
| 6b9d89161d | |||
| 3b9a1937ec | |||
| 7c9d87bcc7 | |||
| e786a7e3a4 | |||
| 6d0ccd22ff | |||
| 1de101fe19 | |||
| b0b34b67a3 | |||
| 00bf250496 | |||
| 5c06bd6a46 | |||
| 49cb88232d | |||
| 710ec0c300 | |||
| d7663788cf | |||
| e33b41ee38 | |||
| dce5e33ab8 | |||
| 238d7e0007 | |||
| 63f4bc276c | |||
| 7abfa41e3d | |||
| 61e1842e5b | |||
| c50096d24b | |||
| 51017e05cd | |||
| 2021babf14 | |||
| 4658416bd2 | |||
| 2c9d732cef | |||
| 9ebdeca380 | |||
| 37f6c59611 | |||
| a59bfaf05b | |||
| 8cd88852c8 | |||
| 30c73048fa | |||
| e8922a7d72 | |||
| 1999de5015 | |||
| a0a6f17c20 | |||
| eb67ff5eff | |||
| 6000a42fa7 | |||
| 20d2deaca4 | |||
| e2575a9ac1 | |||
| f6506dc5b5 | |||
| c58f6a3419 | |||
| 2c3597dcd3 | |||
| 20a0c4dc75 | |||
| 1bff97841a | |||
| 628013ab3d | |||
| 4aee313307 | |||
| de4c124ef0 | |||
| 48698c0f1e | |||
| 56c5f46835 | |||
| 82755db33e | |||
| bd8edd9519 | |||
| 951c130892 | |||
| 118699ac40 | |||
| cd43bc5d69 | |||
| 48a6d66e2c | |||
| 2ee8f324d0 | |||
| 0bfcfbad0e | |||
| 28bf147de0 | |||
| 5d6c079868 | |||
| 1a5bbd2f4b | |||
| 2d4a5315b6 | |||
| 39e348b0bf | |||
| dc85302ebe | |||
| 5b62447da2 | |||
| 2c3b7dc86f | |||
| 519e346b6c | |||
| e7638c214d | |||
| 1f870cbb8b | |||
| a512c4aef3 | |||
| d6bee1bfa5 | |||
| 2d1b8772af | |||
| 7dd85c34fd | |||
| a19c1aa81c | |||
| 0c74d9eaff | |||
| a659d34fcb | |||
| fa28c3b97f | |||
| 40e365285e | |||
| 434bc4dd93 | |||
| 206524bf8e | |||
| 03c0745a87 | |||
| 3e8c11178d | |||
| f9377d63bb | |||
| 9a932e064b | |||
| 150f93a245 | |||
| 04a6b0867f | |||
| a1895c5874 | |||
| abba0e407f | |||
| f33ef09ce6 | |||
| 99b021cd05 | |||
| 29db759891 | |||
| 5e39f17bc1 | |||
| 623960de11 | |||
| 8064337876 | |||
| 4f7278aa17 | |||
| 71d317c7fb | |||
| 96f057374f | |||
| 758bdf0038 | |||
| 2a1fbebe17 | |||
| e3f46df56b | |||
| 834b09ea99 | |||
| ed7d2cba72 | |||
| 062c13bea2 | |||
| fb8da4dbca | |||
| 0889e331f2 | |||
| 2a07520ae4 | |||
| 2df8a68368 | |||
| d6a8506bb5 | |||
| e25aa14236 | |||
| ea104c17bb | |||
| a5186c7604 | |||
| 904e99d28d | |||
| a48b2ccfd0 | |||
| 3d54e0ee2b | |||
| d6304280b3 | |||
| 9d64bb26b1 | |||
| 1cfe3654ed | |||
| 5d1c7cadac | |||
| 7601c1ada8 | |||
| 250701bdee | |||
| 5b111bf467 | |||
| 9fd7d0235f | |||
| ad82fc087e | |||
| fe43c0d23d | |||
| af6acb9dac | |||
| fe7df26fe5 | |||
| e47d6dc926 | |||
| d6258b6ff2 | |||
| 316d58678d | |||
| 471dc6c939 | |||
| 5d9ae838a8 | |||
| 27fafa53ee | |||
| 80da1aae53 | |||
| bddde5852f | |||
| 7652200f35 | |||
| e10d3ee2cd | |||
| 26c44bdd0d | |||
| fcfc6cd76e | |||
| c3735efb47 | |||
| 72925f0fb6 | |||
| 70c679c18b |
+3
-22
@@ -1,23 +1,4 @@
|
||||
# OS X
|
||||
.*.sw?
|
||||
.DS_Store
|
||||
|
||||
# Xcode
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
profile
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.xccheckout
|
||||
|
||||
# CocoaPods
|
||||
Pods
|
||||
.rbenv-version
|
||||
Gemfile.lock
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
language: ruby
|
||||
rvm:
|
||||
- 1.8.7
|
||||
- 1.9.3
|
||||
install: rake travis:setup
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0.1'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0.1' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0.2'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0.2' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0.3'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0.3' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0.4'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0.4' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0.5'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0.5' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0.6'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0.6' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0.7'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0.7' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2DynamicDelegate'
|
||||
s.version = '1.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Blocks are to functions as A2DynamicDelegate is to delegates.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2DynamicDelegate'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us',
|
||||
'Zachary Waldowski' => 'zwaldowski@gmail.com' }
|
||||
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2DynamicDelegate.git', :tag => 'v1.0' }
|
||||
s.source_files = 'A2DynamicDelegate.{h,m}', 'A2BlockDelegate.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2StoryboardSegueContext'
|
||||
s.version = '1.0.1'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Supplement your segues\' identifier strings with context objects.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2StoryboardSegueContext/'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2StoryboardSegueContext.git', :tag => 'v1.0.1' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'A2StoryboardSegueContext.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'A2StoryboardSegueContext'
|
||||
s.version = '1.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Supplement your segues\' identifier strings with context objects.'
|
||||
s.homepage = 'https://github.com/pandamonia/A2StoryboardSegueContext/'
|
||||
s.author = { 'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/pandamonia/A2StoryboardSegueContext.git', :tag => 'v1.0' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'A2StoryboardSegueContext.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ABContactHelper'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Objective-C Address Book wrapper.'
|
||||
s.homepage = 'https://github.com/erica/ABContactHelper'
|
||||
s.author = { 'Erica Sadun' => '' }
|
||||
s.source = { :git => 'https://github.com/erica/ABContactHelper.git', :commit => 'de4bc411fd45db5e7b5b13f38704764bc1e1bcd1' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'ABContact.{h,m}', 'ABGroup.{h,m}', 'ABContactsHelper.{h,m}'
|
||||
s.frameworks = 'AddressBook', 'AddressBookUI'
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ADVProgressBar'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'Progress Bar Design with Percentage values'
|
||||
s.homepage = 'https://github.com/appdesignvault'
|
||||
s.author = { 'appdesignvault' => 'appdesignvault' }
|
||||
s.source = { :git => 'https://github.com/appdesignvault/ADVProgressBar.git', :commit => 'ff88e5ce20fed36b1e0e2da167f0b7f51e62ce8c' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'ADVProgressBar/Classes/*.{h,m}'
|
||||
s.resources = "ADVProgressBar/Resources/*.png"
|
||||
s.framework = 'UIKit'
|
||||
s.clean_paths = "ADVProgressBar.xcodeproj" , 'ADVProgressBar/en.lproj' , 'ADVProgressBar/ADVAppDelegate.{h,m}' , 'ADVProgressBar/ADVViewController.{h,m}' , 'ADVProgressBar/ADVProgressBar-Info.plist' , 'ADVProgressBar/ADVProgressBar-Prefix.pch'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AFHTTPRequestOperationLogger'
|
||||
s.version = '0.9.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'AFNetworking Extension for HTTP Request Logging'
|
||||
s.homepage = 'https://github.com/AFNetworking/AFHTTPRequestOperationLogger'
|
||||
s.authors = { 'Mattt Thompson' => 'm@mattt.me' }
|
||||
s.source = { :git => 'https://github.com/AFNetworking/AFHTTPRequestOperationLogger.git', :tag => '0.9.0' }
|
||||
s.source_files = 'AFHTTPRequestOperationLogger.{h,m}'
|
||||
s.dependency 'AFNetworking', '0.9.0'
|
||||
end
|
||||
@@ -0,0 +1,23 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AFNetworking'
|
||||
s.version = '0.5.1'
|
||||
s.summary = 'A delightful iOS networking library with NSOperations and block-based callbacks'
|
||||
s.homepage = 'https://github.com/gowalla/AFNetworking'
|
||||
s.author = { 'Gowalla' => 'live@gowalla.com' }
|
||||
s.source = { :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.5.1' }
|
||||
|
||||
if config.ios?
|
||||
s.source_files = 'AFNetworking' # everything
|
||||
else
|
||||
s.source_files = %w{
|
||||
AFNetworking/AFHTTPRequestOperation.h
|
||||
AFNetworking/AFJSONRequestOperation.h
|
||||
AFNetworking/NSData+AFNetworking.h
|
||||
AFNetworking/NSMutableURLRequest+AFNetworking.h
|
||||
AFNetworking/NSString+AFNetworking.h
|
||||
}
|
||||
end
|
||||
|
||||
s.library = 'z'
|
||||
s.dependency 'JSONKit'
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AFNetworking'
|
||||
s.version = '0.7.0'
|
||||
s.summary = 'A delightful iOS networking library with NSOperations and block-based callbacks'
|
||||
s.homepage = 'https://github.com/AFNetworking/AFNetworking'
|
||||
s.author = {'Mattt Thompson' => 'm@mattt.me', 'Scott Raymond' => 'sco@gowalla.com'}
|
||||
s.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => '0.7.0' }
|
||||
|
||||
s.source_files = 'AFNetworking'
|
||||
|
||||
s.clean_paths = ['iOS Example', 'Mac Example', 'AFNetworking.xcworkspace']
|
||||
|
||||
s.library = 'z'
|
||||
s.dependency 'JSONKit'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AFNetworking'
|
||||
s.version = '0.9.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A delightful iOS and OS X networking framework'
|
||||
s.homepage = 'https://github.com/AFNetworking/AFNetworking'
|
||||
s.authors = {'Mattt Thompson' => 'm@mattt.me', 'Scott Raymond' => 'sco@gowalla.com'}
|
||||
s.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => '0.9.0' }
|
||||
s.source_files = 'AFNetworking'
|
||||
s.clean_paths = ['iOS Example', 'Mac Example', 'AFNetworking.xcworkspace']
|
||||
s.framework = 'SystemConfiguration'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AFNetworking'
|
||||
s.version = '0.9.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A delightful iOS and OS X networking framework'
|
||||
s.homepage = 'https://github.com/AFNetworking/AFNetworking'
|
||||
s.authors = {'Mattt Thompson' => 'm@mattt.me', 'Scott Raymond' => 'sco@gowalla.com'}
|
||||
s.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => '0.9.1' }
|
||||
s.source_files = 'AFNetworking'
|
||||
s.clean_paths = ['iOS Example', 'Mac Example', 'AFNetworking.xcworkspace']
|
||||
s.framework = 'SystemConfiguration'
|
||||
end
|
||||
@@ -0,0 +1,10 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AFOAuth2Client'
|
||||
s.version = '0.0.1'
|
||||
s.summary = 'AFNetworking Extension for OAuth 2 Authentication'
|
||||
s.homepage = 'https://github.com/AFNetworking/AFOAuth2Client'
|
||||
s.author = { 'Mattt Thompson' => 'm@mattt.me' }
|
||||
s.source = { :git => 'https://github.com/AFNetworking/AFOAuth2Client.git',
|
||||
:commit => '068c25f83b800451cf0b5ba0da7a6a018252c0a9' }
|
||||
s.source_files = '*.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,33 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ASIHTTPRequest'
|
||||
s.version = '1.8.1'
|
||||
s.summary = 'Easy to use CFNetwork wrapper for HTTP requests, Objective-C, Mac OS X and iPhone.'
|
||||
s.homepage = 'http://allseeing-i.com/ASIHTTPRequest'
|
||||
s.author = { 'Ben Copsey' => 'ben@allseeing-i.com' }
|
||||
s.source = { :git => 'https://github.com/pokeb/asi-http-request.git', :tag => 'v1.8.1' }
|
||||
|
||||
s.description = %{
|
||||
ASIHTTPRequest is an easy to use wrapper around the CFNetwork API that
|
||||
makes some of the more tedious aspects of communicating with web servers
|
||||
easier. It is written in Objective-C and works in both Mac OS X and iPhone
|
||||
applications.
|
||||
|
||||
It is suitable performing basic HTTP requests and interacting with
|
||||
REST-based services (GET / POST / PUT / DELETE). The included
|
||||
ASIFormDataRequest subclass makes it easy to submit POST data and files
|
||||
using multipart/form-data.
|
||||
}
|
||||
|
||||
s.clean_paths = '*Sample', 'External', '*.xcodeproj', 'Build Scripts'
|
||||
|
||||
if config.ios?
|
||||
s.dependency 'Reachability' #, '~> 2.0', '>= 2.0.4'
|
||||
s.source_files = 'Classes'
|
||||
s.frameworks = 'MobileCoreServices', 'CFNetwork', 'CoreGraphics'
|
||||
else
|
||||
s.source_files = FileList['Classes/*.*'].exclude(/ASIAuthenticationDialog\.\w$/)
|
||||
s.frameworks = 'SystemConfiguration', 'CoreServices'
|
||||
end
|
||||
|
||||
s.library = 'z.1'
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ASIWebPageRequest'
|
||||
s.version = '1.8.1'
|
||||
s.homepage = 'http://allseeing-i.com/ASIHTTPRequest/ASIWebPageRequest'
|
||||
s.author = { 'Ben Copsey' => 'ben@allseeing-i.com' }
|
||||
|
||||
s.summary = 'The ASIWebPageRequest class included with ASIHTTPRequest lets you ' \
|
||||
'download complete webpages, including external resources like ' \
|
||||
'images and stylesheets.'
|
||||
|
||||
s.part_of_dependency = 'ASIHTTPRequest', '1.8.1'
|
||||
s.source_files = 'Classes/ASIWebPageRequest/*.m', 'Classes/ASIWebPageRequest/*.h'
|
||||
|
||||
s.library = 'xml2.2.7.3'
|
||||
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }
|
||||
end
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ASStarRatingView'
|
||||
s.version = '0.1.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = "ASStarRatingView is a control to rating with stars, it is simple to use and configurable"
|
||||
s.homepage = 'https://github.com/bl0ckme/ASStarRatingView'
|
||||
s.author = { 'Sam Yang' => 'yanguango@gmail.com' }
|
||||
s.source = { :git => 'https://github.com/bl0ckme/ASStarRatingView.git', :tag => 'v0.1.0' }
|
||||
s.description = "ASStarRatingView is a control to rating with stars, it is simple to use and configurable"
|
||||
s.platform = :ios
|
||||
s.source_files = 'ASStarRatingView/**/*.{h,m}'
|
||||
s.resources = "ASStarRatingView/stars/*.png"
|
||||
s.clean_path = "ASStarRatingViewDemo"
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ATMHud'
|
||||
s.version = '0.0.1'
|
||||
s.platform = :ios
|
||||
s.summary = 'Library for the creation of HUDs in iPhone applications.'
|
||||
s.homepage = 'https://github.com/atomton/ATMHud'
|
||||
s.author = { 'Marcel Müller' => 'pool@atomton.net' }
|
||||
s.source = { :git => 'git://github.com/atomton/ATMHud.git', :commit => 'fc79fed7268362c744de5470169db0a381866ad7' }
|
||||
s.source_files = 'ATM*.{h,m}'
|
||||
s.resources = '11-x.png', '19-check.png', 'pop.wav'
|
||||
s.frameworks = 'QuartzCore', 'AudioToolbox'
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'AUIAnimatedText'
|
||||
s.version = '0.0.1'
|
||||
s.summary = 'A drop-in UILabel replacement that makes almost all properties animatable by using a CATextLayer instead of CALayer.'
|
||||
s.homepage = 'https://github.com/adam-siton/AUIAnimatedText'
|
||||
s.author = { 'Adam Siton'=> 'adamsiton@gmail.com' }
|
||||
s.source = { :git => 'https://github.com/adam-siton/AUIAnimatedText.git' }
|
||||
s.description = 'Properties animatable in AUIAnimatableText and not in UILabel: textColor, text, font, fontSize.'
|
||||
s.platform = :ios
|
||||
s.source_files = 'AUIAnimatedText/AUIAnimatedText/AUIAnimatableLabel.{h,m}', 'AUIAnimatedText/AUIAnimatedText/UIFont+CoreTextExtensions.{h,m}'
|
||||
s.clean_paths =
|
||||
'AUIAnimatedText/AUIAnimatedTextTests',
|
||||
'AUIAnimatedText/AUIAnimatedText.xcodeproj',
|
||||
'AUIAnimatedText/AUIAnimatedText/en.lproj',
|
||||
'AUIAnimatedText/AUIAnimatedText/iPhone',
|
||||
'AUIAnimatedText/AUIAnimatedText/AUIAnimatedText-Info.plist',
|
||||
'AUIAnimatedText/AUIAnimatedText/AUIAnimatedText-Prefix.pch',
|
||||
'AUIAnimatedText/AUIAnimatedText/AUIAnimatedTextAppDelegate.{h,m}',
|
||||
'AUIAnimatedText/AUIAnimatedText/RootViewController.{h,m,xib}',
|
||||
'AUIAnimatedText/AUIAnimatedText/main.m'
|
||||
s.framework = 'CoreText', 'QuartzCore', 'CoreGraphics', 'UIKit'
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Appirater'
|
||||
s.version = '0.0.1'
|
||||
s.platform = :ios
|
||||
s.summary = "A utility that reminds your iPhone app's users to review the app."
|
||||
s.homepage = 'http://arashpayan.com/blog/2009/09/07/presenting-appirater/'
|
||||
s.author = { 'Arash Payan' => 'arash.payan@gmail.com' }
|
||||
s.source = { :git => 'git://github.com/arashpayan/appirater.git', :commit => '0f3776a47b17bd4f6cbee0ad02c9450869d26c42' }
|
||||
s.source_files = '*.{h,m}'
|
||||
s.frameworks = 'CFNetwork', 'SystemConfiguration'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Appirater'
|
||||
s.version = '0.0.2'
|
||||
s.platform = :ios
|
||||
s.summary = "A utility that reminds your iPhone app's users to review the app."
|
||||
s.homepage = 'http://arashpayan.com/blog/2009/09/07/presenting-appirater/'
|
||||
s.author = { 'Arash Payan' => 'arash.payan@gmail.com' }
|
||||
s.source = { :git => 'git://github.com/mk/appirater.git', :tag => '0.0.2' }
|
||||
s.source_files = '*.{h,m}'
|
||||
s.frameworks = 'CFNetwork', 'SystemConfiguration'
|
||||
s.resource = 'Appirater.bundle'
|
||||
end
|
||||
@@ -0,0 +1,28 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BaseKit'
|
||||
s.version = '0.1.0'
|
||||
s.license = 'Apache 2'
|
||||
s.summary = 'BaseKit is a set of IOS class to make your life easier.'
|
||||
s.homepage = 'https://github.com/brunow/BaseKit'
|
||||
s.author = { 'Bruno Wernimont' => 'bruno.wernimont+github@gmail.com' }
|
||||
s.source = { :git => 'https://github.com/brunow/BaseKit.git', :tag => '0.1' }
|
||||
|
||||
s.description = 'BaseKit is a set of IOS class to make your life easier.'
|
||||
s.platform = :ios
|
||||
s.clean_paths = 'Examples', 'GHUnitIOS.framework', 'Test', 'Vendor', 'README.md', '.gitignore', 'BaseKit.xcodeproj'
|
||||
|
||||
s.subspec 'Core' do |core|
|
||||
core.source_files = 'Code/Core/*.{h,m}'
|
||||
end
|
||||
|
||||
s.subspec 'View' do |view|
|
||||
view.source_files = 'Code/View/*.{h,m}'
|
||||
view.dependency 'BaseKit/Core'
|
||||
end
|
||||
|
||||
s.subspec 'CellMapping' do |cell_mapping|
|
||||
cell_mapping.source_files = 'Code/CellMapping/*.{h,m}'
|
||||
cell_mapping.dependency 'BaseKit/Core'
|
||||
cell_mapping.dependency 'BaseKit/View'
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,23 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '0.5.0' # picked some version number as the project doesn't have one yet
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com'}
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :commit => '84b12bd081c71b17e56c133002eee8f8577e9a24' }
|
||||
|
||||
s.source_files = 'BlocksKit'
|
||||
|
||||
s.frameworks = 'MessageUI'
|
||||
|
||||
s.requires_arc = true
|
||||
|
||||
s.clean_paths = 'BlocksKit.xcodeproj/', 'GHUnitIOS.framework/', 'Tests/', '.gitignore'
|
||||
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import <dispatch/dispatch.h>\n#import "BKGlobals.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,23 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '0.9.0'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com'}
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v0.9' }
|
||||
|
||||
s.source_files = 'BlocksKit'
|
||||
|
||||
s.frameworks = 'MessageUI'
|
||||
|
||||
s.requires_arc = true
|
||||
|
||||
s.clean_paths = 'BlocksKit.xcodeproj/', 'GHUnitIOS.framework/', 'Tests/', '.gitignore'
|
||||
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import <dispatch/dispatch.h>\n#import "BKGlobals.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,23 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '0.9.5'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com'}
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v0.9.5' }
|
||||
|
||||
s.source_files = 'BlocksKit'
|
||||
|
||||
s.frameworks = 'MessageUI'
|
||||
|
||||
s.requires_arc = true
|
||||
|
||||
s.clean_paths = 'BlocksKit.xcodeproj/', 'GHUnitIOS.framework/', 'Tests/', '.gitignore'
|
||||
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import <dispatch/dispatch.h>\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '1.0.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com',
|
||||
'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v1.0.0' }
|
||||
s.source_files = 'BlocksKit'
|
||||
s.dependency 'A2DynamicDelegate'
|
||||
s.clean_paths = 'GHUnitIOS.framework/', 'Tests/', 'BlocksKit.xcodeproj/', '.gitignore'
|
||||
if config.ios?
|
||||
s.frameworks = 'MessageUI'
|
||||
end
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '1.0.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com',
|
||||
'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v1.0.1' }
|
||||
s.source_files = 'BlocksKit'
|
||||
s.dependency 'A2DynamicDelegate'
|
||||
s.clean_paths = 'GHUnitIOS.framework/', 'Tests/', 'BlocksKit.xcodeproj/', '.gitignore'
|
||||
if config.ios?
|
||||
s.frameworks = 'MessageUI'
|
||||
end
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '1.0.2'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com',
|
||||
'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v1.0.2' }
|
||||
s.source_files = 'BlocksKit'
|
||||
s.dependency 'A2DynamicDelegate'
|
||||
s.clean_paths = 'GHUnitIOS.framework/', 'Tests/', 'BlocksKit.xcodeproj/', '.gitignore'
|
||||
if config.ios?
|
||||
s.frameworks = 'MessageUI'
|
||||
end
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '1.0.3'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com',
|
||||
'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v1.0.3' }
|
||||
s.source_files = 'BlocksKit'
|
||||
s.dependency 'A2DynamicDelegate'
|
||||
s.clean_paths = 'GHUnitIOS.framework/', 'Tests/', 'BlocksKit.xcodeproj/', '.gitignore'
|
||||
if config.ios?
|
||||
s.frameworks = 'MessageUI'
|
||||
end
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '1.0.4'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com',
|
||||
'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v1.0.4' }
|
||||
s.source_files = 'BlocksKit'
|
||||
s.dependency 'A2DynamicDelegate'
|
||||
s.clean_paths = 'GHUnitIOS.framework/', 'Tests/', 'BlocksKit.xcodeproj/', '.gitignore'
|
||||
if config.ios?
|
||||
s.frameworks = 'MessageUI'
|
||||
end
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '1.0.5'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com',
|
||||
'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v1.0.5' }
|
||||
s.source_files = 'BlocksKit'
|
||||
s.dependency 'A2DynamicDelegate'
|
||||
s.clean_paths = 'GHUnitIOS.framework/', 'Tests/', 'BlocksKit.xcodeproj/', '.gitignore'
|
||||
if config.ios?
|
||||
s.frameworks = 'MessageUI'
|
||||
end
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,24 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'BlocksKit'
|
||||
s.version = '1.0.6'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'The Objective-C block utilities you always wish you had.'
|
||||
s.homepage = 'https://github.com/zwaldowski/BlocksKit'
|
||||
s.author = { 'Zachary Waldowski' => 'zwaldowski@gmail.com',
|
||||
'Alexsander Akers' => 'a2@pandamonia.us' }
|
||||
s.source = { :git => 'https://github.com/zwaldowski/BlocksKit.git', :tag => 'v1.0.6' }
|
||||
s.dependency 'A2DynamicDelegate'
|
||||
s.clean_paths = 'GHUnitIOS.framework/', 'Tests/', 'BlocksKit.xcodeproj/', '.gitignore'
|
||||
if config.ios?
|
||||
s.frameworks = 'MessageUI'
|
||||
s.source_files = 'BlocksKit/*.{h,m}', 'BlocksKit/UIKit/*.{h,m}', 'BlocksKit/MessageUI/*.{h,m}'
|
||||
else
|
||||
s.source_files = 'BlocksKit/*.{h,m}'
|
||||
end
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import "BlocksKit.h"\n#endif})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CEPopupPickerView'
|
||||
s.version = '0.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A UIPickerView that pops up, just like the Facebook app.'
|
||||
s.homepage = 'https://github.com/chriseidhof/CEPopupPickerView'
|
||||
s.author = { 'Chris Eidhof' => 'chris@eidhof.nl' }
|
||||
|
||||
s.source = { :git => 'https://github.com/chriseidhof/CEPopupPickerView.git', :tag => 'v0.1' }
|
||||
|
||||
s.platform = :ios
|
||||
s.requires_arc = true
|
||||
|
||||
s.source_files = 'CEPopupPickerView/CEPopupPickerView.{h,m}'
|
||||
s.clean_paths = '*.xcodeproj', '**/*.lproj', '**/*.plist', '*.xcworkspace',
|
||||
'*Tests', 'Podfile', '**/*.pch',
|
||||
"**/CEAppDelegate.*",
|
||||
"**/CEViewController.{h,m}",
|
||||
"**/main.m"
|
||||
end
|
||||
-588
@@ -1,588 +0,0 @@
|
||||
# Change Log
|
||||
|
||||
## [v2.9.0](https://github.com/Jawbone/JBChartView/tree/v2.9.0) (2015-12-04)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.19...v2.9.0)
|
||||
|
||||
## [v2.8.19](https://github.com/Jawbone/JBChartView/tree/v2.8.19) (2015-11-23)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.18...v2.8.19)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Straight lines [\#94](https://github.com/Jawbone/JBChartView/issues/94)
|
||||
|
||||
## [v2.8.18](https://github.com/Jawbone/JBChartView/tree/v2.8.18) (2015-11-22)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.17...v2.8.18)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Vertical values should be supplied by the DataSource delegate for LineCharts [\#180](https://github.com/Jawbone/JBChartView/issues/180)
|
||||
- JBLineChartDotsView reloadData performance issues [\#179](https://github.com/Jawbone/JBChartView/issues/179)
|
||||
|
||||
## [v2.8.17](https://github.com/Jawbone/JBChartView/tree/v2.8.17) (2015-11-21)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.16...v2.8.17)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Disabling/Enabling certain functionality: line chart selection and x-axis values [\#185](https://github.com/Jawbone/JBChartView/issues/185)
|
||||
- Add ability to set selection permanently. [\#153](https://github.com/Jawbone/JBChartView/issues/153)
|
||||
- The line fill color doesn't match the bottom of the drawn line [\#146](https://github.com/Jawbone/JBChartView/issues/146)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Bug when quickly tapping a line chart in two different places [\#159](https://github.com/Jawbone/JBChartView/issues/159)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Show dot only on vertical line selection [\#190](https://github.com/Jawbone/JBChartView/issues/190)
|
||||
- Needs to support negative values [\#189](https://github.com/Jawbone/JBChartView/issues/189)
|
||||
|
||||
## [v2.8.16](https://github.com/Jawbone/JBChartView/tree/v2.8.16) (2015-09-18)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.15...v2.8.16)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Partially filled bar [\#186](https://github.com/Jawbone/JBChartView/issues/186)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Delegate call to ignore touches on selected lines [\#188](https://github.com/Jawbone/JBChartView/pull/188) ([andrewloyola](https://github.com/andrewloyola))
|
||||
|
||||
## [v2.8.15](https://github.com/Jawbone/JBChartView/tree/v2.8.15) (2015-08-12)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.14...v2.8.15)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Suggestion for the README.md [\#176](https://github.com/Jawbone/JBChartView/issues/176)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Line color overlap issue [\#168](https://github.com/Jawbone/JBChartView/issues/168)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- JBLineChart reloadData problem [\#181](https://github.com/Jawbone/JBChartView/issues/181)
|
||||
- JBLineChartView: wrong width on iPhone6/6+ [\#177](https://github.com/Jawbone/JBChartView/issues/177)
|
||||
- Is there anyway to plot two vertical values for one horizontal index in the bar chart? [\#172](https://github.com/Jawbone/JBChartView/issues/172)
|
||||
- Charts not rendering properly [\#171](https://github.com/Jawbone/JBChartView/issues/171)
|
||||
- How can you set the bar chart to fill the width of a UIView? [\#170](https://github.com/Jawbone/JBChartView/issues/170)
|
||||
- Adding X and Y Values [\#169](https://github.com/Jawbone/JBChartView/issues/169)
|
||||
- Undefined symbols for architecture i386 [\#167](https://github.com/Jawbone/JBChartView/issues/167)
|
||||
- Not All Data Points Visible in Flexible View [\#166](https://github.com/Jawbone/JBChartView/issues/166)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Return the available height instead of 0 [\#183](https://github.com/Jawbone/JBChartView/pull/183) ([0xPr0xy](https://github.com/0xPr0xy))
|
||||
- Adds support for gradients to line charts [\#175](https://github.com/Jawbone/JBChartView/pull/175) ([benjaminsnorris](https://github.com/benjaminsnorris))
|
||||
|
||||
## [v2.8.14](https://github.com/Jawbone/JBChartView/tree/v2.8.14) (2015-04-30)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.13...v2.8.14)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Will JBChartView integrated with React Native? [\#164](https://github.com/Jawbone/JBChartView/issues/164)
|
||||
- white dot+dotted lines sometimes does not appear when touched. [\#161](https://github.com/Jawbone/JBChartView/issues/161)
|
||||
- Small offset when using a footer for a x-axis [\#160](https://github.com/Jawbone/JBChartView/issues/160)
|
||||
- gradient for bar chart is lost / sizing problem [\#158](https://github.com/Jawbone/JBChartView/issues/158)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Nil out delegate and datasource on dealloc [\#165](https://github.com/Jawbone/JBChartView/pull/165) ([eventualbuddha](https://github.com/eventualbuddha))
|
||||
|
||||
## [v2.8.13](https://github.com/Jawbone/JBChartView/tree/v2.8.13) (2015-04-16)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.12...v2.8.13)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Wrong calculation of the lineIndex [\#157](https://github.com/Jawbone/JBChartView/issues/157)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Swift round up for respondsToSelector\(\) and sizeWithFont\(\) [\#156](https://github.com/Jawbone/JBChartView/issues/156)
|
||||
|
||||
## [v2.8.12](https://github.com/Jawbone/JBChartView/tree/v2.8.12) (2015-04-13)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.11...v2.8.12)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Footer and Header view Swift implementation [\#152](https://github.com/Jawbone/JBChartView/issues/152)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Problems with selection when JBLineChartView is within UITableView [\#155](https://github.com/Jawbone/JBChartView/issues/155)
|
||||
- Show chart selection permanently [\#151](https://github.com/Jawbone/JBChartView/issues/151)
|
||||
- Crash when returning NAN [\#150](https://github.com/Jawbone/JBChartView/issues/150)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Fix warnings when building w/ Xcode 6.3 [\#154](https://github.com/Jawbone/JBChartView/pull/154) ([amro](https://github.com/amro))
|
||||
|
||||
## [v2.8.11](https://github.com/Jawbone/JBChartView/tree/v2.8.11) (2015-03-31)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.10...v2.8.11)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Pass back barView & dot instances on selection [\#118](https://github.com/Jawbone/JBChartView/issues/118)
|
||||
- Add ability to have the line start or end at any given point [\#115](https://github.com/Jawbone/JBChartView/issues/115)
|
||||
- Consolidate dot view selection/unselection/color calls [\#101](https://github.com/Jawbone/JBChartView/issues/101)
|
||||
- Change dot radius to dot diameter [\#99](https://github.com/Jawbone/JBChartView/issues/99)
|
||||
- need Swift implementation details and example [\#80](https://github.com/Jawbone/JBChartView/issues/80)
|
||||
- Add bar/line caching for only visible content. [\#61](https://github.com/Jawbone/JBChartView/issues/61)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Pie Chart support [\#149](https://github.com/Jawbone/JBChartView/issues/149)
|
||||
- hi is it possible to have x,y value because in example there is no y value and only 2 x value [\#141](https://github.com/Jawbone/JBChartView/issues/141)
|
||||
- imports without pods [\#140](https://github.com/Jawbone/JBChartView/issues/140)
|
||||
- How can I group Bars? [\#139](https://github.com/Jawbone/JBChartView/issues/139)
|
||||
- request: AreaChart - fillColorForLineAtLineIndex - add custom color for a specific X axis range [\#137](https://github.com/Jawbone/JBChartView/issues/137)
|
||||
- smallest value is shown as a blank bar [\#136](https://github.com/Jawbone/JBChartView/issues/136)
|
||||
- Is there any way I can use JBBarChartView as horizontal bars? [\#135](https://github.com/Jawbone/JBChartView/issues/135)
|
||||
- Multiple colors to a line graph [\#134](https://github.com/Jawbone/JBChartView/issues/134)
|
||||
- Overriding - \(void\)barChartView:\(JBBarChartView \*\)barChartView didSelectBarAtIndex:\(NSUInteger\)index is not showing selection view? [\#133](https://github.com/Jawbone/JBChartView/issues/133)
|
||||
- Exception thrown on setState: [\#132](https://github.com/Jawbone/JBChartView/issues/132)
|
||||
- X and Y scale and reference values [\#131](https://github.com/Jawbone/JBChartView/issues/131)
|
||||
- Determine x-value of a certain point by a number instead of it's index in the input array? [\#130](https://github.com/Jawbone/JBChartView/issues/130)
|
||||
- How to accomplish similar didUnselectBarChartView [\#129](https://github.com/Jawbone/JBChartView/issues/129)
|
||||
- Is posible - scroll chart [\#126](https://github.com/Jawbone/JBChartView/issues/126)
|
||||
- Crash when vertical value for horizontal at index x less than zero [\#125](https://github.com/Jawbone/JBChartView/issues/125)
|
||||
- JBBarChartView does not display all the bars [\#124](https://github.com/Jawbone/JBChartView/issues/124)
|
||||
- "automatically normalized across the entire chart" [\#123](https://github.com/Jawbone/JBChartView/issues/123)
|
||||
- reloadData in viewDidLayoutSubviews does not trigger didDeselectLineInLineChartView on first selection [\#122](https://github.com/Jawbone/JBChartView/issues/122)
|
||||
- Question [\#121](https://github.com/Jawbone/JBChartView/issues/121)
|
||||
- Sublayers not properly resized [\#120](https://github.com/Jawbone/JBChartView/issues/120)
|
||||
- It will be really cool if "while on tap on line charts dots I can get the dot object do some scale animation" or something? [\#119](https://github.com/Jawbone/JBChartView/issues/119)
|
||||
- Is there any way I can pass new bar view while user selects particular bar? [\#117](https://github.com/Jawbone/JBChartView/issues/117)
|
||||
- Typo error in README [\#114](https://github.com/Jawbone/JBChartView/issues/114)
|
||||
- Dynamic/append values [\#113](https://github.com/Jawbone/JBChartView/issues/113)
|
||||
- It needs better documentation [\#112](https://github.com/Jawbone/JBChartView/issues/112)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Keep tooltip subviews above line subviews [\#144](https://github.com/Jawbone/JBChartView/pull/144) ([vocaro](https://github.com/vocaro))
|
||||
- Fix crash and warnings that can occur when a chart line has no data [\#143](https://github.com/Jawbone/JBChartView/pull/143) ([vocaro](https://github.com/vocaro))
|
||||
- Add automatically generated change log file. [\#142](https://github.com/Jawbone/JBChartView/pull/142) ([skywinder](https://github.com/skywinder))
|
||||
- Update README.md [\#127](https://github.com/Jawbone/JBChartView/pull/127) ([paal123](https://github.com/paal123))
|
||||
- Add ability to have the line start or end at any given point [\#116](https://github.com/Jawbone/JBChartView/pull/116) ([sebastianreloaded](https://github.com/sebastianreloaded))
|
||||
|
||||
## [v2.8.10](https://github.com/Jawbone/JBChartView/tree/v2.8.10) (2014-09-23)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.9...v2.8.10)
|
||||
|
||||
## [v2.8.9](https://github.com/Jawbone/JBChartView/tree/v2.8.9) (2014-09-22)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.8...v2.8.9)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- JBLineChartView doesn't resize its subviews [\#111](https://github.com/Jawbone/JBChartView/issues/111)
|
||||
|
||||
## [v2.8.8](https://github.com/Jawbone/JBChartView/tree/v2.8.8) (2014-09-20)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.7...v2.8.8)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- iOS 8 warnings [\#110](https://github.com/Jawbone/JBChartView/issues/110)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Noob level tutorial [\#109](https://github.com/Jawbone/JBChartView/issues/109)
|
||||
- Data points with uneavenly distributed x-values? [\#108](https://github.com/Jawbone/JBChartView/issues/108)
|
||||
|
||||
## [v2.8.7](https://github.com/Jawbone/JBChartView/tree/v2.8.7) (2014-09-09)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.6...v2.8.7)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Add hide custom dot functionality [\#100](https://github.com/Jawbone/JBChartView/issues/100)
|
||||
- Add footer padding [\#98](https://github.com/Jawbone/JBChartView/issues/98)
|
||||
- DotView is hidden when inside selected table view cell [\#82](https://github.com/Jawbone/JBChartView/issues/82)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- There should be flexibility to change to touch point to nearest data point so vertical selection view just jumps from one data point to another in JBLineChartView. [\#105](https://github.com/Jawbone/JBChartView/issues/105)
|
||||
- barWidth Method and barPadding property should be in JBBarChartView header file. [\#104](https://github.com/Jawbone/JBChartView/issues/104)
|
||||
- Why minimum and maximum should be positive? [\#102](https://github.com/Jawbone/JBChartView/issues/102)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- iOS Framework Support [\#107](https://github.com/Jawbone/JBChartView/pull/107) ([thefirstnikhil](https://github.com/thefirstnikhil))
|
||||
- Only call `numberOfLinesInLineChartView:` once per loop. [\#106](https://github.com/Jawbone/JBChartView/pull/106) ([eventualbuddha](https://github.com/eventualbuddha))
|
||||
|
||||
## [v2.8.6](https://github.com/Jawbone/JBChartView/tree/v2.8.6) (2014-08-29)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.5...v2.8.6)
|
||||
|
||||
## [v2.8.5](https://github.com/Jawbone/JBChartView/tree/v2.8.5) (2014-08-28)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.4...v2.8.5)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Invert option for bar charts [\#97](https://github.com/Jawbone/JBChartView/issues/97)
|
||||
|
||||
## [v2.8.4](https://github.com/Jawbone/JBChartView/tree/v2.8.4) (2014-08-27)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.3...v2.8.4)
|
||||
|
||||
## [v2.8.3](https://github.com/Jawbone/JBChartView/tree/v2.8.3) (2014-08-26)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.2...v2.8.3)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- return type of barPaddingForBarChartView: [\#93](https://github.com/Jawbone/JBChartView/issues/93)
|
||||
- Custom dot functionality [\#92](https://github.com/Jawbone/JBChartView/issues/92)
|
||||
|
||||
## [v2.8.2](https://github.com/Jawbone/JBChartView/tree/v2.8.2) (2014-08-26)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.1...v2.8.2)
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Selection view width should equal bar width [\#96](https://github.com/Jawbone/JBChartView/issues/96)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Changing dot radius in dotRadiusForLineAtLineIndex has no effect [\#95](https://github.com/Jawbone/JBChartView/issues/95)
|
||||
|
||||
## [v2.8.1](https://github.com/Jawbone/JBChartView/tree/v2.8.1) (2014-08-23)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.8.0...v2.8.1)
|
||||
|
||||
## [v2.8.0](https://github.com/Jawbone/JBChartView/tree/v2.8.0) (2014-08-15)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.7.4...v2.8.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Don't bring selection view to front with line view [\#89](https://github.com/Jawbone/JBChartView/issues/89)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add per-line vertical selection color support. [\#90](https://github.com/Jawbone/JBChartView/pull/90) ([mszaro](https://github.com/mszaro))
|
||||
|
||||
## [v2.7.4](https://github.com/Jawbone/JBChartView/tree/v2.7.4) (2014-08-15)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.7.3...v2.7.4)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Not able to create Y-Axis labels or background grid [\#20](https://github.com/Jawbone/JBChartView/issues/20)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- \[Enhancement\] Provide an option to disable Y-axis normalization for line graphs [\#88](https://github.com/Jawbone/JBChartView/issues/88)
|
||||
- Add left padding to the graph for y-axis labels [\#87](https://github.com/Jawbone/JBChartView/issues/87)
|
||||
- Error Protocol not implemented [\#86](https://github.com/Jawbone/JBChartView/issues/86)
|
||||
- What if I want to animate the LineChartView progression? [\#85](https://github.com/Jawbone/JBChartView/issues/85)
|
||||
- Enabling smooth lines in line chart view results in line graph clipping \(Out of bounds\)? [\#83](https://github.com/Jawbone/JBChartView/issues/83)
|
||||
|
||||
## [v2.7.3](https://github.com/Jawbone/JBChartView/tree/v2.7.3) (2014-08-07)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.7.2...v2.7.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Can I animate bar charts? [\#79](https://github.com/Jawbone/JBChartView/issues/79)
|
||||
- Create generic dataSource and delegate for extensibility. [\#78](https://github.com/Jawbone/JBChartView/issues/78)
|
||||
|
||||
## [v2.7.2](https://github.com/Jawbone/JBChartView/tree/v2.7.2) (2014-08-04)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.7.1...v2.7.2)
|
||||
|
||||
## [v2.7.1](https://github.com/Jawbone/JBChartView/tree/v2.7.1) (2014-08-04)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.7.0...v2.7.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Typo in JBBarChartView.h [\#77](https://github.com/Jawbone/JBChartView/issues/77)
|
||||
- Refactor datasource and delegate functions [\#76](https://github.com/Jawbone/JBChartView/issues/76)
|
||||
|
||||
## [v2.7.0](https://github.com/Jawbone/JBChartView/tree/v2.7.0) (2014-08-02)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.6.3...v2.7.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Incorrect padding on line widths [\#75](https://github.com/Jawbone/JBChartView/issues/75)
|
||||
|
||||
## [v2.6.3](https://github.com/Jawbone/JBChartView/tree/v2.6.3) (2014-07-31)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.6.2...v2.6.3)
|
||||
|
||||
## [v2.6.2](https://github.com/Jawbone/JBChartView/tree/v2.6.2) (2014-07-25)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.6.1...v2.6.2)
|
||||
|
||||
## [v2.6.1](https://github.com/Jawbone/JBChartView/tree/v2.6.1) (2014-07-25)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.6.0...v2.6.1)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- iOS 6 support [\#74](https://github.com/Jawbone/JBChartView/pull/74) ([luosheng](https://github.com/luosheng))
|
||||
|
||||
## [v2.6.0](https://github.com/Jawbone/JBChartView/tree/v2.6.0) (2014-07-24)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.5.5...v2.6.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Allow setting views for lines as well as bars [\#73](https://github.com/Jawbone/JBChartView/issues/73)
|
||||
- Requires iOS 7 or later [\#72](https://github.com/Jawbone/JBChartView/issues/72)
|
||||
- How to Know the x,width of each bar [\#70](https://github.com/Jawbone/JBChartView/issues/70)
|
||||
- Multiple y-axis [\#69](https://github.com/Jawbone/JBChartView/issues/69)
|
||||
- NSInternalInconsistencyException - JBLineChartView // dataSource must implement [\#68](https://github.com/Jawbone/JBChartView/issues/68)
|
||||
- Zoom and scrolling? \(Question\) [\#65](https://github.com/Jawbone/JBChartView/issues/65)
|
||||
- Support for missing data points rather than going to 0? [\#63](https://github.com/Jawbone/JBChartView/issues/63)
|
||||
- Interesting behavior 'barViewAtIndex' and 'colorForBarViewAtIndex'. [\#62](https://github.com/Jawbone/JBChartView/issues/62)
|
||||
- In LineChart x-axis, splits into more numbers and not able view x-axis last point [\#60](https://github.com/Jawbone/JBChartView/issues/60)
|
||||
- Overlay more than 1 chart? [\#59](https://github.com/Jawbone/JBChartView/issues/59)
|
||||
- Footer Views - Can they be perpendicular to the x-axis [\#58](https://github.com/Jawbone/JBChartView/issues/58)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Fill Color on Line Chart [\#71](https://github.com/Jawbone/JBChartView/pull/71) ([legranddamien](https://github.com/legranddamien))
|
||||
- Added documentation for usage in a Swift project [\#67](https://github.com/Jawbone/JBChartView/pull/67) ([jonparker](https://github.com/jonparker))
|
||||
|
||||
## [v2.5.5](https://github.com/Jawbone/JBChartView/tree/v2.5.5) (2014-05-14)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.5.4...v2.5.5)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Ability to draw lines with negative values [\#51](https://github.com/Jawbone/JBChartView/issues/51)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- How to adjust selected bar height for LineChart in demo project [\#56](https://github.com/Jawbone/JBChartView/issues/56)
|
||||
- Line Chart Collapse Animation Changed? [\#54](https://github.com/Jawbone/JBChartView/issues/54)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Fixed barView's frame. [\#57](https://github.com/Jawbone/JBChartView/pull/57) ([pala](https://github.com/pala))
|
||||
- Update sample code in readme [\#55](https://github.com/Jawbone/JBChartView/pull/55) ([pala](https://github.com/pala))
|
||||
|
||||
## [v2.5.4](https://github.com/Jawbone/JBChartView/tree/v2.5.4) (2014-05-07)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.5.3...v2.5.4)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Add delegate method barChartView:colorForBarViewAtIndex: to JBBarChartViewDataSource [\#53](https://github.com/Jawbone/JBChartView/pull/53) ([skywinder](https://github.com/skywinder))
|
||||
- Compiling warrnings and typos [\#52](https://github.com/Jawbone/JBChartView/pull/52) ([skywinder](https://github.com/skywinder))
|
||||
|
||||
## [v2.5.3](https://github.com/Jawbone/JBChartView/tree/v2.5.3) (2014-05-06)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.5.2...v2.5.3)
|
||||
|
||||
## [v2.5.2](https://github.com/Jawbone/JBChartView/tree/v2.5.2) (2014-05-06)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.5.1...v2.5.2)
|
||||
|
||||
## [v2.5.1](https://github.com/Jawbone/JBChartView/tree/v2.5.1) (2014-05-05)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.5.0...v2.5.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- non-evenly distributed plots [\#50](https://github.com/Jawbone/JBChartView/issues/50)
|
||||
- Using minimum of 0 as default [\#48](https://github.com/Jawbone/JBChartView/issues/48)
|
||||
|
||||
## [v2.5.0](https://github.com/Jawbone/JBChartView/tree/v2.5.0) (2014-05-04)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.4.3...v2.5.0)
|
||||
|
||||
## [v2.4.3](https://github.com/Jawbone/JBChartView/tree/v2.4.3) (2014-05-04)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.4.2...v2.4.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Bars not drawn when all have the same height [\#47](https://github.com/Jawbone/JBChartView/issues/47)
|
||||
- Moving podspec to root [\#46](https://github.com/Jawbone/JBChartView/issues/46)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- fixed typo, renamed mininum -\> minimum [\#49](https://github.com/Jawbone/JBChartView/pull/49) ([simonnickel](https://github.com/simonnickel))
|
||||
|
||||
## [v2.4.2](https://github.com/Jawbone/JBChartView/tree/v2.4.2) (2014-05-01)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.4.1...v2.4.2)
|
||||
|
||||
## [v2.4.1](https://github.com/Jawbone/JBChartView/tree/v2.4.1) (2014-04-30)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.4.0...v2.4.1)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Curved line charts [\#23](https://github.com/Jawbone/JBChartView/issues/23)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- JBChartView demo footerview problem [\#44](https://github.com/Jawbone/JBChartView/issues/44)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Smooth curve fix [\#45](https://github.com/Jawbone/JBChartView/pull/45) ([ktran03](https://github.com/ktran03))
|
||||
|
||||
## [v2.4.0](https://github.com/Jawbone/JBChartView/tree/v2.4.0) (2014-04-28)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.3.0...v2.4.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Aligning X-axis, padding? [\#43](https://github.com/Jawbone/JBChartView/issues/43)
|
||||
- `JBLineChartFooterView` Value Marks are Inaccurate [\#41](https://github.com/Jawbone/JBChartView/issues/41)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- smooth curve using bezierpath [\#39](https://github.com/Jawbone/JBChartView/pull/39) ([ktran03](https://github.com/ktran03))
|
||||
|
||||
## [v2.3.0](https://github.com/Jawbone/JBChartView/tree/v2.3.0) (2014-04-18)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.2.0...v2.3.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Crash, lineChartView "must implement numberOfPointsInLineChartView" ? [\#38](https://github.com/Jawbone/JBChartView/issues/38)
|
||||
|
||||
## [v2.2.0](https://github.com/Jawbone/JBChartView/tree/v2.2.0) (2014-04-14)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.1.6...v2.2.0)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Typo in readme? [\#36](https://github.com/Jawbone/JBChartView/issues/36)
|
||||
- Nav bar background remains black [\#35](https://github.com/Jawbone/JBChartView/issues/35)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Added delegate method to configure the width of the vertical selection bar in a line chart. [\#37](https://github.com/Jawbone/JBChartView/pull/37) ([ghost](https://github.com/ghost))
|
||||
|
||||
## [v2.1.6](https://github.com/Jawbone/JBChartView/tree/v2.1.6) (2014-04-11)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.1.5...v2.1.6)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- `showsLineSelection` Does Nothing [\#33](https://github.com/Jawbone/JBChartView/issues/33)
|
||||
- cocoapods [\#31](https://github.com/Jawbone/JBChartView/issues/31)
|
||||
|
||||
## [v2.1.5](https://github.com/Jawbone/JBChartView/tree/v2.1.5) (2014-04-10)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.1.4...v2.1.5)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- JBChartView: needs initWithCoder initializer for inflation from a xib [\#30](https://github.com/Jawbone/JBChartView/pull/30) ([gumbypp](https://github.com/gumbypp))
|
||||
|
||||
## [v2.1.4](https://github.com/Jawbone/JBChartView/tree/v2.1.4) (2014-04-10)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.1.3...v2.1.4)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Stach bars? [\#29](https://github.com/Jawbone/JBChartView/issues/29)
|
||||
- Problem with Bar Height [\#28](https://github.com/Jawbone/JBChartView/issues/28)
|
||||
- Selection does not work without Auto Layout in iPhone 3.5" [\#27](https://github.com/Jawbone/JBChartView/issues/27)
|
||||
|
||||
## [v2.1.3](https://github.com/Jawbone/JBChartView/tree/v2.1.3) (2014-04-03)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.1.2...v2.1.3)
|
||||
|
||||
## [v2.1.2](https://github.com/Jawbone/JBChartView/tree/v2.1.2) (2014-04-02)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.1.1...v2.1.2)
|
||||
|
||||
## [v2.1.1](https://github.com/Jawbone/JBChartView/tree/v2.1.1) (2014-04-02)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.1.0...v2.1.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- representing negative values [\#26](https://github.com/Jawbone/JBChartView/issues/26)
|
||||
- Real time [\#25](https://github.com/Jawbone/JBChartView/issues/25)
|
||||
|
||||
## [v2.1.0](https://github.com/Jawbone/JBChartView/tree/v2.1.0) (2014-03-31)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.0.2...v2.1.0)
|
||||
|
||||
## [v2.0.2](https://github.com/Jawbone/JBChartView/tree/v2.0.2) (2014-03-27)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.0.1...v2.0.2)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Negative Bars? [\#24](https://github.com/Jawbone/JBChartView/issues/24)
|
||||
|
||||
## [v2.0.1](https://github.com/Jawbone/JBChartView/tree/v2.0.1) (2014-03-19)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v2.0.0...v2.0.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- NSAssert on bar height in JBBarChartView, \> 0 when it should be \>= [\#22](https://github.com/Jawbone/JBChartView/issues/22)
|
||||
|
||||
## [v2.0.0](https://github.com/Jawbone/JBChartView/tree/v2.0.0) (2014-03-19)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.1.6...v2.0.0)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Multiple Lines on chart [\#6](https://github.com/Jawbone/JBChartView/issues/6)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- JBBarChartView Bar Height Problem With Storyboard/Autolayout [\#19](https://github.com/Jawbone/JBChartView/issues/19)
|
||||
- blank result [\#18](https://github.com/Jawbone/JBChartView/issues/18)
|
||||
- Bar Highlight Offset Issue [\#17](https://github.com/Jawbone/JBChartView/issues/17)
|
||||
- Following the tutorial creates an empty/blank view [\#16](https://github.com/Jawbone/JBChartView/issues/16)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Multiple Line Support & Tooltips [\#21](https://github.com/Jawbone/JBChartView/pull/21) ([terryworona](https://github.com/terryworona))
|
||||
|
||||
## [v1.1.6](https://github.com/Jawbone/JBChartView/tree/v1.1.6) (2014-03-03)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.1.5...v1.1.6)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Added customization for line width [\#15](https://github.com/Jawbone/JBChartView/pull/15) ([kmcbride](https://github.com/kmcbride))
|
||||
- fix spelling mistake [\#14](https://github.com/Jawbone/JBChartView/pull/14) ([Undo1](https://github.com/Undo1))
|
||||
|
||||
## [v1.1.5](https://github.com/Jawbone/JBChartView/tree/v1.1.5) (2014-02-12)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.1.4...v1.1.5)
|
||||
|
||||
## [v1.1.4](https://github.com/Jawbone/JBChartView/tree/v1.1.4) (2014-02-06)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.1.3...v1.1.4)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- What about ios6 [\#13](https://github.com/Jawbone/JBChartView/issues/13)
|
||||
- Could the Bar Chart data be nil ? [\#12](https://github.com/Jawbone/JBChartView/issues/12)
|
||||
|
||||
## [v1.1.3](https://github.com/Jawbone/JBChartView/tree/v1.1.3) (2014-01-06)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.1.2...v1.1.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- heightForIndex should return CGFloat instead of NSInteger [\#9](https://github.com/Jawbone/JBChartView/issues/9)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Fixes small typos in README [\#11](https://github.com/Jawbone/JBChartView/pull/11) ([sampage](https://github.com/sampage))
|
||||
|
||||
## [v1.1.2](https://github.com/Jawbone/JBChartView/tree/v1.1.2) (2014-01-03)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.1.1...v1.1.2)
|
||||
|
||||
## [v1.1.1](https://github.com/Jawbone/JBChartView/tree/v1.1.1) (2014-01-02)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.1.0...v1.1.1)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- reloadData is not reducing height of other bars [\#7](https://github.com/Jawbone/JBChartView/issues/7)
|
||||
- Add barViewAtIndex: to datasource [\#5](https://github.com/Jawbone/JBChartView/issues/5)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Reset cached max height on data reload Fixes \#7 [\#8](https://github.com/Jawbone/JBChartView/pull/8) ([l4u](https://github.com/l4u))
|
||||
|
||||
## [v1.1.0](https://github.com/Jawbone/JBChartView/tree/v1.1.0) (2013-12-26)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.0.3...v1.1.0)
|
||||
|
||||
## [v1.0.3](https://github.com/Jawbone/JBChartView/tree/v1.0.3) (2013-12-23)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.0.2...v1.0.3)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Single press on bar [\#3](https://github.com/Jawbone/JBChartView/issues/3)
|
||||
|
||||
## [v1.0.2](https://github.com/Jawbone/JBChartView/tree/v1.0.2) (2013-12-17)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.0.1...v1.0.2)
|
||||
|
||||
## [v1.0.1](https://github.com/Jawbone/JBChartView/tree/v1.0.1) (2013-12-15)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/v1.0...v1.0.1)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- If there is no footer view, bars won't be added to the chart. [\#2](https://github.com/Jawbone/JBChartView/pull/2) ([joelkraut](https://github.com/joelkraut))
|
||||
|
||||
## [v1.0](https://github.com/Jawbone/JBChartView/tree/v1.0) (2013-12-11)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/0.2.0...v1.0)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- JBChartViewDemo and JBChartView [\#1](https://github.com/Jawbone/JBChartView/pull/1) ([terryworona](https://github.com/terryworona))
|
||||
|
||||
## [0.2.0](https://github.com/Jawbone/JBChartView/tree/0.2.0) (2013-08-20)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/1.0...0.2.0)
|
||||
|
||||
## [1.0](https://github.com/Jawbone/JBChartView/tree/1.0) (2012-04-23)
|
||||
[Full Changelog](https://github.com/Jawbone/JBChartView/compare/1.0.0...1.0)
|
||||
|
||||
## [1.0.0](https://github.com/Jawbone/JBChartView/tree/1.0.0) (2012-04-23)
|
||||
|
||||
|
||||
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
||||
@@ -0,0 +1,13 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CMPopTipView'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'Custom UIView for iOS that pops up an animated "bubble" pointing at a button or other view. Useful for popup tips.'
|
||||
s.homepage = 'https://github.com/chrismiles/CMPopTipView'
|
||||
s.author = { 'Chris Miles' => 'http://chrismiles.info/' }
|
||||
s.source = { :git => 'https://github.com/chrismiles/CMPopTipView.git', :commit => '92e85f47c565e25063d95959edcf1fd4db700a34' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'CMPopTipView/*.{h,m}'
|
||||
s.framework = 'UIKit'
|
||||
s.clean_path = "Demo"
|
||||
end
|
||||
@@ -1,163 +0,0 @@
|
||||
//
|
||||
// JBBarChartView.h
|
||||
// JBChartView
|
||||
//
|
||||
// Created by Terry Worona on 9/3/13.
|
||||
// Copyright (c) 2013 Jawbone. All rights reserved.
|
||||
//
|
||||
|
||||
// Views
|
||||
#import "JBChartView.h"
|
||||
|
||||
@class JBBarChartView;
|
||||
|
||||
@protocol JBBarChartViewDataSource <JBChartViewDataSource>
|
||||
|
||||
@required
|
||||
|
||||
/**
|
||||
* The number of bars in a given bar chart is the number of vertical views shown along the x-axis.
|
||||
*
|
||||
* @param barChartView The bar chart object requesting this information.
|
||||
*
|
||||
* @return Number of bars in the given chart, displayed horizontally along the chart's x-axis.
|
||||
*/
|
||||
- (NSUInteger)numberOfBarsInBarChartView:(JBBarChartView *)barChartView;
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* A UIView subclass representing the bar at a particular index.
|
||||
*
|
||||
* Default: solid black UIView.
|
||||
*
|
||||
* @param barChartView The bar chart object requesting this information.
|
||||
* @param index The 0-based index of a given bar (left to right, x-axis).
|
||||
*
|
||||
* @return A UIView subclass. The view will automatically be resized by the chart during creation (ie. no need to set the frame).
|
||||
*/
|
||||
- (UIView *)barChartView:(JBBarChartView *)barChartView barViewAtIndex:(NSUInteger)index;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JBBarChartViewDelegate <JBChartViewDelegate>
|
||||
|
||||
@required
|
||||
|
||||
/**
|
||||
* Height for a bar at a given index (left to right). There is no ceiling on the the height;
|
||||
* the chart will automatically normalize all values between the overal min and max heights.
|
||||
*
|
||||
* @param barChartView The bar chart object requesting this information.
|
||||
* @param index The 0-based index of a given bar (left to right, x-axis).
|
||||
*
|
||||
* @return The y-axis height of the supplied bar index (x-axis)
|
||||
*/
|
||||
- (CGFloat)barChartView:(JBBarChartView *)barChartView heightForBarViewAtIndex:(NSUInteger)index;
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* Occurs when a touch gesture event occurs on a given bar (chart must be expanded).
|
||||
* and the selection must occur within the bounds of the chart.
|
||||
*
|
||||
* @param barChartView A bar chart object informing the delegate about the new selection.
|
||||
* @param index The 0-based index of a given bar (left to right, x-axis).
|
||||
* @param touchPoint The touch point in relation to the chart's bounds (excludes footer and header).
|
||||
*/
|
||||
- (void)barChartView:(JBBarChartView *)barChartView didSelectBarAtIndex:(NSUInteger)index touchPoint:(CGPoint)touchPoint;
|
||||
- (void)barChartView:(JBBarChartView *)barChartView didSelectBarAtIndex:(NSUInteger)index;
|
||||
|
||||
/**
|
||||
* Occurs when selection ends by either ending a touch event or selecting an area that is outside the view's bounds.
|
||||
* For selection start events, see: didSelectBarAtIndex...
|
||||
*
|
||||
* @param barChartView A bar chart object informing the delegate about the deselection.
|
||||
*/
|
||||
- (void)didDeselectBarChartView:(JBBarChartView *)barChartView;
|
||||
|
||||
/**
|
||||
* If you already implement barChartView:barViewAtIndex: delegate - this method has no effect.
|
||||
* If a custom UIView isn't supplied, a flat bar will be made automatically (default color black).
|
||||
*
|
||||
* Default: black color.
|
||||
*
|
||||
* @param barChartView The bar chart object requesting this information.
|
||||
* @param index The 0-based index of a given bar (left to right, x-axis).
|
||||
*
|
||||
* @return The color to be used to color a bar in the chart.
|
||||
*/
|
||||
- (UIColor *)barChartView:(JBBarChartView *)barChartView colorForBarViewAtIndex:(NSUInteger)index;
|
||||
|
||||
/**
|
||||
* If you already implement barChartView:barViewAtIndex: delegate - this method has no effect.
|
||||
* If a custom UIView isn't supplied and barChartView:colorForBarViewAtIndex: isn't implemented, then
|
||||
* a gradient layer may be supplied to be used across all bars within the chart.
|
||||
*
|
||||
* Default: black color.
|
||||
*
|
||||
* @param barChartView The bar chart object requesting this information.
|
||||
*
|
||||
* @return The gradient layer to be used as a mask over all bars within the chart.
|
||||
*/
|
||||
- (CAGradientLayer *)barGradientForBarChartView:(JBBarChartView *)barChartView;
|
||||
|
||||
/**
|
||||
* The selection color to be overlayed on a bar during touch events.
|
||||
* The color is automatically faded to transparent (vertically). The property showsVerticalSelection
|
||||
* must be YES for the color to apply.
|
||||
*
|
||||
* Default: white color (faded to transparent).
|
||||
*
|
||||
* @param barChartView The bar chart object requesting this information.
|
||||
*
|
||||
* @return The color to be used on each bar selection.
|
||||
*/
|
||||
- (UIColor *)barSelectionColorForBarChartView:(JBBarChartView *)barChartView;
|
||||
|
||||
/**
|
||||
* Horizontal padding between bars.
|
||||
*
|
||||
* Default: 'best-guess' algorithm based on the the total number of bars and width of the chart.
|
||||
*
|
||||
* @param barChartView The bar chart object requesting this information.
|
||||
*
|
||||
* @return Horizontal width (in pixels) between each bar.
|
||||
*/
|
||||
- (CGFloat)barPaddingForBarChartView:(JBBarChartView *)barChartView;
|
||||
|
||||
@end
|
||||
|
||||
@interface JBBarChartView : JBChartView
|
||||
|
||||
@property (nonatomic, weak) id<JBBarChartViewDataSource> dataSource;
|
||||
@property (nonatomic, weak) id<JBBarChartViewDelegate> delegate;
|
||||
|
||||
/**
|
||||
* Vertical highlight overlayed on bar during touch events.
|
||||
*
|
||||
* Default: YES.
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL showsVerticalSelection;
|
||||
|
||||
/*
|
||||
* Bars can be (vertically) positoned top to bottom instead of bottom up.
|
||||
* If this property is set to YES, both the bar and the selection view will be inverted.
|
||||
* For the inverted orientation to take effect, reloadData must be called.
|
||||
*
|
||||
* Default: NO.
|
||||
*/
|
||||
@property (nonatomic, assign, getter=isInverted) BOOL inverted;
|
||||
|
||||
/**
|
||||
* The bar view at a particular index.
|
||||
*
|
||||
* Default: nil.
|
||||
*
|
||||
* @param index The 0-based index of a given bar (left to right, x-axis).
|
||||
*
|
||||
* @return The UIView representing the bar view at a given index or nil if the index is out of range.
|
||||
*/
|
||||
- (UIView *)barViewAtIndex:(NSUInteger)index;
|
||||
|
||||
@end
|
||||
@@ -1,768 +0,0 @@
|
||||
//
|
||||
// JBBarChartView.m
|
||||
// Nudge
|
||||
//
|
||||
// Created by Terry Worona on 9/3/13.
|
||||
// Copyright (c) 2013 Jawbone. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JBBarChartView.h"
|
||||
|
||||
// Numerics
|
||||
CGFloat static const kJBBarChartViewBarBasePaddingMutliplier = 50.0f;
|
||||
CGFloat static const kJBBarChartViewUndefinedCachedHeight = -1.0f;
|
||||
CGFloat static const kJBBarChartViewStateAnimationDuration = 0.05f;
|
||||
CGFloat static const kJBBarChartViewStatePopOffset = 10.0f;
|
||||
NSInteger static const kJBBarChartViewUndefinedBarIndex = -1;
|
||||
|
||||
// Colors (JBChartView)
|
||||
static UIColor *kJBBarChartViewDefaultBarColor = nil;
|
||||
|
||||
@interface JBChartView (Private)
|
||||
|
||||
- (BOOL)hasMaximumValue;
|
||||
- (BOOL)hasMinimumValue;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JBGradientBarViewDelegate;
|
||||
|
||||
@interface JBGradientBarView: UIView
|
||||
|
||||
@property (nonatomic, strong) CAGradientLayer *gradientLayer;
|
||||
@property (nonatomic, weak) id<JBGradientBarViewDelegate> delegate;
|
||||
|
||||
// Initialization
|
||||
- (void)construct;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JBGradientBarViewDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
- (CGRect)chartViewBoundsForGradientBarView:(JBGradientBarView *)gradientBarView;
|
||||
|
||||
@end
|
||||
|
||||
@interface JBBarChartView () <JBGradientBarViewDelegate>
|
||||
|
||||
@property (nonatomic, strong) NSDictionary *chartDataDictionary; // key = column, value = height
|
||||
@property (nonatomic, strong) NSArray *barViews;
|
||||
@property (nonatomic, strong) NSArray *cachedBarViewHeights;
|
||||
@property (nonatomic, assign) CGFloat barPadding;
|
||||
@property (nonatomic, assign) CGFloat cachedMaxHeight;
|
||||
@property (nonatomic, assign) CGFloat cachedMinHeight;
|
||||
@property (nonatomic, strong) JBChartVerticalSelectionView *verticalSelectionView;
|
||||
@property (nonatomic, assign) BOOL verticalSelectionViewVisible;
|
||||
|
||||
// Initialization
|
||||
- (void)construct;
|
||||
|
||||
// View quick accessors
|
||||
- (CGFloat)availableHeight;
|
||||
- (CGFloat)normalizedHeightForRawHeight:(NSNumber *)rawHeight;
|
||||
- (CGFloat)barWidth;
|
||||
|
||||
// Touch helpers
|
||||
- (NSInteger)barViewIndexForPoint:(CGPoint)point;
|
||||
- (UIView *)barViewForForPoint:(CGPoint)point;
|
||||
- (void)touchesBeganOrMovedWithTouches:(NSSet *)touches;
|
||||
- (void)touchesEndedOrCancelledWithTouches:(NSSet *)touches;
|
||||
|
||||
// Setters
|
||||
- (void)setVerticalSelectionViewVisible:(BOOL)verticalSelectionViewVisible animated:(BOOL)animated;
|
||||
|
||||
@end
|
||||
|
||||
@implementation JBBarChartView
|
||||
|
||||
@dynamic dataSource;
|
||||
@dynamic delegate;
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
if (self == [JBBarChartView class])
|
||||
{
|
||||
kJBBarChartViewDefaultBarColor = [UIColor blackColor];
|
||||
}
|
||||
}
|
||||
|
||||
- (id)initWithCoder:(NSCoder *)aDecoder
|
||||
{
|
||||
self = [super initWithCoder:aDecoder];
|
||||
if (self)
|
||||
{
|
||||
[self construct];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self)
|
||||
{
|
||||
[self construct];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
[self construct];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)construct
|
||||
{
|
||||
_showsVerticalSelection = YES;
|
||||
_cachedMinHeight = kJBBarChartViewUndefinedCachedHeight;
|
||||
_cachedMaxHeight = kJBBarChartViewUndefinedCachedHeight;
|
||||
}
|
||||
|
||||
#pragma mark - Memory Management
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[NSObject cancelPreviousPerformRequestsWithTarget:self];
|
||||
}
|
||||
|
||||
#pragma mark - Data
|
||||
|
||||
- (void)reloadData
|
||||
{
|
||||
// reset cached max height
|
||||
self.cachedMinHeight = kJBBarChartViewUndefinedCachedHeight;
|
||||
self.cachedMaxHeight = kJBBarChartViewUndefinedCachedHeight;
|
||||
|
||||
/*
|
||||
* The data collection holds all position information:
|
||||
* constructed via datasource and delegate functions
|
||||
*/
|
||||
dispatch_block_t createDataDictionaries = ^{
|
||||
|
||||
// Grab the count
|
||||
NSAssert([self.dataSource respondsToSelector:@selector(numberOfBarsInBarChartView:)], @"JBBarChartView // datasource must implement - (NSUInteger)numberOfBarsInBarChartView:(JBBarChartView *)barChartView");
|
||||
NSUInteger dataCount = [self.dataSource numberOfBarsInBarChartView:self];
|
||||
|
||||
// Build up the data collection
|
||||
NSAssert([self.delegate respondsToSelector:@selector(barChartView:heightForBarViewAtIndex:)], @"JBBarChartView // delegate must implement - (CGFloat)barChartView:(JBBarChartView *)barChartView heightForBarViewAtIndex:(NSUInteger)index");
|
||||
NSMutableDictionary *dataDictionary = [NSMutableDictionary dictionary];
|
||||
for (NSUInteger index=0; index<dataCount; index++)
|
||||
{
|
||||
CGFloat height = [self.delegate barChartView:self heightForBarViewAtIndex:index];
|
||||
NSAssert(height >= 0, @"JBBarChartView // datasource function - (CGFloat)barChartView:(JBBarChartView *)barChartView heightForBarViewAtIndex:(NSUInteger)index must return a CGFloat >= 0");
|
||||
[dataDictionary setObject:[NSNumber numberWithFloat:height] forKey:[NSNumber numberWithInt:(int)index]];
|
||||
}
|
||||
self.chartDataDictionary = [NSDictionary dictionaryWithDictionary:dataDictionary];
|
||||
};
|
||||
|
||||
/*
|
||||
* Determines the padding between bars as a function of # of bars
|
||||
*/
|
||||
dispatch_block_t createBarPadding = ^{
|
||||
if ([self.delegate respondsToSelector:@selector(barPaddingForBarChartView:)])
|
||||
{
|
||||
self.barPadding = [self.delegate barPaddingForBarChartView:self];
|
||||
}
|
||||
else
|
||||
{
|
||||
NSUInteger totalBars = [[self.chartDataDictionary allKeys] count];
|
||||
self.barPadding = (1/(float)totalBars) * kJBBarChartViewBarBasePaddingMutliplier;
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* Creates a new bar graph view using the previously calculated data model
|
||||
*/
|
||||
dispatch_block_t createBars = ^{
|
||||
|
||||
// Remove old bars
|
||||
for (UIView *barView in self.barViews)
|
||||
{
|
||||
[barView removeFromSuperview];
|
||||
}
|
||||
|
||||
self.cachedBarViewHeights = nil;
|
||||
|
||||
CGFloat xOffset = 0;
|
||||
NSUInteger index = 0;
|
||||
NSMutableArray *mutableBarViews = [NSMutableArray array];
|
||||
NSMutableArray *mutableCachedBarViewHeights = [NSMutableArray array];
|
||||
for (NSNumber *key in [[self.chartDataDictionary allKeys] sortedArrayUsingSelector:@selector(compare:)])
|
||||
{
|
||||
UIView *barView = nil;
|
||||
{
|
||||
// Custom bar
|
||||
if ([self.dataSource respondsToSelector:@selector(barChartView:barViewAtIndex:)])
|
||||
{
|
||||
UIView *customBarView = [self.dataSource barChartView:self barViewAtIndex:index];
|
||||
if (customBarView != nil)
|
||||
{
|
||||
barView = customBarView;
|
||||
}
|
||||
}
|
||||
|
||||
// Color bar
|
||||
if ([self.delegate respondsToSelector:@selector(barChartView:colorForBarViewAtIndex:)] && barView == nil)
|
||||
{
|
||||
UIColor *backgroundColor = [self.delegate barChartView:self colorForBarViewAtIndex:index];
|
||||
if (backgroundColor != nil)
|
||||
{
|
||||
barView = [[UIView alloc] init];
|
||||
barView.backgroundColor = backgroundColor;
|
||||
}
|
||||
}
|
||||
|
||||
// Gradient
|
||||
if ([self.delegate respondsToSelector:@selector(barGradientForBarChartView:)] && barView == nil)
|
||||
{
|
||||
CAGradientLayer *gradientLayer = [self.delegate barGradientForBarChartView:self];
|
||||
if (gradientLayer != nil)
|
||||
{
|
||||
barView = [[JBGradientBarView alloc] init];
|
||||
((JBGradientBarView *)barView).delegate = self;
|
||||
((JBGradientBarView *)barView).gradientLayer = gradientLayer;
|
||||
}
|
||||
}
|
||||
|
||||
// Default
|
||||
if (barView == nil)
|
||||
{
|
||||
barView = [[UIView alloc] init];
|
||||
barView.backgroundColor = kJBBarChartViewDefaultBarColor;
|
||||
}
|
||||
}
|
||||
barView.tag = index;
|
||||
|
||||
// Add new bar
|
||||
if (self.footerView)
|
||||
{
|
||||
[self insertSubview:barView belowSubview:self.footerView];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self addSubview:barView];
|
||||
}
|
||||
|
||||
CGFloat height = [self normalizedHeightForRawHeight:[self.chartDataDictionary objectForKey:key]];
|
||||
barView.frame = CGRectMake(xOffset, self.bounds.size.height - height - self.footerView.frame.size.height, [self barWidth], height);
|
||||
[mutableBarViews addObject:barView];
|
||||
[mutableCachedBarViewHeights addObject:[NSNumber numberWithFloat:height]];
|
||||
|
||||
xOffset += ([self barWidth] + self.barPadding);
|
||||
index++;
|
||||
}
|
||||
self.barViews = [NSArray arrayWithArray:mutableBarViews];
|
||||
self.cachedBarViewHeights = [NSArray arrayWithArray:mutableCachedBarViewHeights];
|
||||
};
|
||||
|
||||
/*
|
||||
* Creates a vertical selection view for touch events
|
||||
*/
|
||||
dispatch_block_t createSelectionView = ^{
|
||||
|
||||
// Remove old selection bar
|
||||
if (self.verticalSelectionView)
|
||||
{
|
||||
[self.verticalSelectionView removeFromSuperview];
|
||||
self.verticalSelectionView = nil;
|
||||
}
|
||||
|
||||
CGFloat verticalSelectionViewHeight = self.bounds.size.height - self.headerView.frame.size.height - self.footerView.frame.size.height - self.headerPadding - self.footerPadding;
|
||||
|
||||
if ([self.dataSource respondsToSelector:@selector(shouldExtendSelectionViewIntoHeaderPaddingForChartView:)])
|
||||
{
|
||||
if ([self.dataSource shouldExtendSelectionViewIntoHeaderPaddingForChartView:self])
|
||||
{
|
||||
verticalSelectionViewHeight += self.headerPadding;
|
||||
}
|
||||
}
|
||||
|
||||
if ([self.dataSource respondsToSelector:@selector(shouldExtendSelectionViewIntoFooterPaddingForChartView:)])
|
||||
{
|
||||
if ([self.dataSource shouldExtendSelectionViewIntoFooterPaddingForChartView:self])
|
||||
{
|
||||
verticalSelectionViewHeight += self.footerPadding;
|
||||
}
|
||||
}
|
||||
|
||||
self.verticalSelectionView = [[JBChartVerticalSelectionView alloc] initWithFrame:CGRectMake(0, 0, [self barWidth], verticalSelectionViewHeight)];
|
||||
self.verticalSelectionView.alpha = 0.0;
|
||||
self.verticalSelectionView.hidden = !self.showsVerticalSelection;
|
||||
if ([self.delegate respondsToSelector:@selector(barSelectionColorForBarChartView:)])
|
||||
{
|
||||
UIColor *selectionViewBackgroundColor = [self.delegate barSelectionColorForBarChartView:self];
|
||||
NSAssert(selectionViewBackgroundColor != nil, @"JBBarChartView // delegate function - (UIColor *)barSelectionColorForBarChartView:(JBBarChartView *)barChartView must return a non-nil UIColor");
|
||||
self.verticalSelectionView.bgColor = selectionViewBackgroundColor;
|
||||
}
|
||||
|
||||
// Add new selection bar
|
||||
if (self.footerView)
|
||||
{
|
||||
[self insertSubview:self.verticalSelectionView belowSubview:self.footerView];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self addSubview:self.verticalSelectionView];
|
||||
}
|
||||
|
||||
self.verticalSelectionView.transform = self.inverted ? CGAffineTransformMakeScale(1.0, -1.0) : CGAffineTransformIdentity;
|
||||
};
|
||||
|
||||
createDataDictionaries();
|
||||
createBarPadding();
|
||||
createBars();
|
||||
createSelectionView();
|
||||
|
||||
// Position header and footer
|
||||
self.headerView.frame = CGRectMake(self.bounds.origin.x, self.bounds.origin.y, self.bounds.size.width, self.headerView.frame.size.height);
|
||||
self.footerView.frame = CGRectMake(self.bounds.origin.x, self.bounds.size.height - self.footerView.frame.size.height, self.bounds.size.width, self.footerView.frame.size.height);
|
||||
|
||||
// Refresh state
|
||||
[self setState:self.state animated:NO force:YES callback:nil];
|
||||
}
|
||||
|
||||
#pragma mark - View Quick Accessors
|
||||
|
||||
- (CGFloat)availableHeight
|
||||
{
|
||||
return self.bounds.size.height - self.headerView.frame.size.height - self.footerView.frame.size.height - self.headerPadding - self.footerPadding;
|
||||
}
|
||||
|
||||
- (CGFloat)normalizedHeightForRawHeight:(NSNumber *)rawHeight
|
||||
{
|
||||
CGFloat minHeight = [self minimumValue];
|
||||
CGFloat maxHeight = [self maximumValue];
|
||||
CGFloat value = [rawHeight floatValue];
|
||||
|
||||
if ((maxHeight - minHeight) <= 0)
|
||||
{
|
||||
return [self availableHeight];
|
||||
}
|
||||
|
||||
return ((value - minHeight) / (maxHeight - minHeight)) * [self availableHeight];
|
||||
}
|
||||
|
||||
- (CGFloat)barWidth
|
||||
{
|
||||
NSUInteger barCount = [[self.chartDataDictionary allKeys] count];
|
||||
if (barCount > 0)
|
||||
{
|
||||
CGFloat totalPadding = (barCount - 1) * self.barPadding;
|
||||
CGFloat availableWidth = self.bounds.size.width - totalPadding;
|
||||
return availableWidth / barCount;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma mark - Setters
|
||||
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated force:(BOOL)force callback:(void (^)())callback
|
||||
{
|
||||
[super setState:state animated:animated force:force callback:callback];
|
||||
|
||||
__weak JBBarChartView* weakSelf = self;
|
||||
|
||||
void (^updateBarView)(UIView *barView, BOOL popBar);
|
||||
|
||||
updateBarView = ^(UIView *barView, BOOL popBar) {
|
||||
if (weakSelf.inverted)
|
||||
{
|
||||
if (weakSelf.state == JBChartViewStateExpanded)
|
||||
{
|
||||
if (popBar)
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.headerView.frame.size.height + weakSelf.headerPadding, barView.frame.size.width, [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue] + kJBBarChartViewStatePopOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.headerView.frame.size.height + weakSelf.headerPadding, barView.frame.size.width, [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue]);
|
||||
}
|
||||
}
|
||||
else if (weakSelf.state == JBChartViewStateCollapsed)
|
||||
{
|
||||
if (popBar)
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.headerView.frame.size.height + weakSelf.headerPadding, barView.frame.size.width, [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue] + kJBBarChartViewStatePopOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.headerView.frame.size.height + weakSelf.headerPadding, barView.frame.size.width, 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (weakSelf.state == JBChartViewStateExpanded)
|
||||
{
|
||||
if (popBar)
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.bounds.size.height - weakSelf.footerView.frame.size.height - weakSelf.footerPadding - [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue] - kJBBarChartViewStatePopOffset, barView.frame.size.width, [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue] + kJBBarChartViewStatePopOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.bounds.size.height - weakSelf.footerView.frame.size.height - weakSelf.footerPadding - [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue], barView.frame.size.width, [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue]);
|
||||
}
|
||||
}
|
||||
else if (weakSelf.state == JBChartViewStateCollapsed)
|
||||
{
|
||||
if (popBar)
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.bounds.size.height - weakSelf.footerView.frame.size.height - weakSelf.footerPadding - [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue] - kJBBarChartViewStatePopOffset, barView.frame.size.width, [[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue] + kJBBarChartViewStatePopOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
barView.frame = CGRectMake(barView.frame.origin.x, weakSelf.bounds.size.height, barView.frame.size.width, 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
dispatch_block_t callbackCopy = [callback copy];
|
||||
|
||||
if ([self.barViews count] > 0)
|
||||
{
|
||||
if (animated)
|
||||
{
|
||||
dispatch_block_t animationCompletionBlock = ^{
|
||||
if (callbackCopy)
|
||||
{
|
||||
callbackCopy();
|
||||
}
|
||||
};
|
||||
|
||||
NSUInteger animationDelayIndex = 0;
|
||||
for (UIView *barView in self.barViews)
|
||||
{
|
||||
BOOL lastIndex = ((NSUInteger)barView.tag == [self.barViews count] - 1);
|
||||
if ([[weakSelf.cachedBarViewHeights objectAtIndex:barView.tag] floatValue] > [self minimumValue])
|
||||
{
|
||||
[UIView animateWithDuration:kJBBarChartViewStateAnimationDuration delay:(kJBBarChartViewStateAnimationDuration * 0.5) * animationDelayIndex options:UIViewAnimationOptionBeginFromCurrentState animations:^{
|
||||
updateBarView(barView, YES);
|
||||
} completion:^(BOOL finished) {
|
||||
[UIView animateWithDuration:kJBBarChartViewStateAnimationDuration delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
|
||||
updateBarView(barView, NO);
|
||||
} completion:^(BOOL lastBarFinished) {
|
||||
if (lastIndex)
|
||||
{
|
||||
animationCompletionBlock();
|
||||
}
|
||||
}];
|
||||
}];
|
||||
animationDelayIndex++;
|
||||
}
|
||||
else if (lastIndex)
|
||||
{
|
||||
animationCompletionBlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (UIView *barView in self.barViews)
|
||||
{
|
||||
updateBarView(barView, NO);
|
||||
}
|
||||
if (callbackCopy)
|
||||
{
|
||||
callbackCopy();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (callbackCopy)
|
||||
{
|
||||
callbackCopy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated callback:(void (^)())callback
|
||||
{
|
||||
[self setState:state animated:animated force:NO callback:callback];
|
||||
}
|
||||
|
||||
- (void)setVerticalSelectionViewVisible:(BOOL)verticalSelectionViewVisible animated:(BOOL)animated
|
||||
{
|
||||
_verticalSelectionViewVisible = verticalSelectionViewVisible;
|
||||
|
||||
if (animated)
|
||||
{
|
||||
[UIView animateWithDuration:kJBChartViewDefaultAnimationDuration delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
|
||||
self.verticalSelectionView.alpha = self.verticalSelectionViewVisible ? 1.0 : 0.0;
|
||||
} completion:nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.verticalSelectionView.alpha = _verticalSelectionViewVisible ? 1.0 : 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setVerticalSelectionViewVisible:(BOOL)verticalSelectionViewVisible
|
||||
{
|
||||
[self setVerticalSelectionViewVisible:verticalSelectionViewVisible animated:NO];
|
||||
}
|
||||
|
||||
- (void)setShowsVerticalSelection:(BOOL)showsVerticalSelection
|
||||
{
|
||||
_showsVerticalSelection = showsVerticalSelection;
|
||||
self.verticalSelectionView.hidden = _showsVerticalSelection ? NO : YES;
|
||||
}
|
||||
|
||||
#pragma mark - Getters
|
||||
|
||||
- (CGFloat)cachedMinHeight
|
||||
{
|
||||
if(_cachedMinHeight == kJBBarChartViewUndefinedCachedHeight)
|
||||
{
|
||||
NSArray *chartValues = [[NSMutableArray arrayWithArray:[self.chartDataDictionary allValues]] sortedArrayUsingSelector:@selector(compare:)];
|
||||
_cachedMinHeight = [[chartValues firstObject] floatValue];
|
||||
}
|
||||
return _cachedMinHeight;
|
||||
}
|
||||
|
||||
- (CGFloat)cachedMaxHeight
|
||||
{
|
||||
if (_cachedMaxHeight == kJBBarChartViewUndefinedCachedHeight)
|
||||
{
|
||||
NSArray *chartValues = [[NSMutableArray arrayWithArray:[self.chartDataDictionary allValues]] sortedArrayUsingSelector:@selector(compare:)];
|
||||
_cachedMaxHeight = [[chartValues lastObject] floatValue];
|
||||
}
|
||||
return _cachedMaxHeight;
|
||||
}
|
||||
|
||||
- (CGFloat)minimumValue
|
||||
{
|
||||
if ([self hasMinimumValue])
|
||||
{
|
||||
return fminf(self.cachedMinHeight, [super minimumValue]);
|
||||
}
|
||||
return self.cachedMinHeight;
|
||||
}
|
||||
|
||||
- (CGFloat)maximumValue
|
||||
{
|
||||
if ([self hasMaximumValue])
|
||||
{
|
||||
return fmaxf(self.cachedMaxHeight, [super maximumValue]);
|
||||
}
|
||||
return self.cachedMaxHeight;
|
||||
}
|
||||
|
||||
- (UIView *)barViewAtIndex:(NSUInteger)index
|
||||
{
|
||||
if (index < [self.barViews count])
|
||||
{
|
||||
return [self.barViews objectAtIndex:index];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
#pragma mark - Touch Helpers
|
||||
|
||||
- (NSInteger)barViewIndexForPoint:(CGPoint)point
|
||||
{
|
||||
NSUInteger index = 0;
|
||||
NSUInteger selectedIndex = kJBBarChartViewUndefinedBarIndex;
|
||||
|
||||
if (point.x < 0 || point.x > self.bounds.size.width)
|
||||
{
|
||||
return selectedIndex;
|
||||
}
|
||||
|
||||
CGFloat padding = ceil(self.barPadding * 0.5);
|
||||
for (UIView *barView in self.barViews)
|
||||
{
|
||||
CGFloat minX = CGRectGetMinX(barView.frame) - padding;
|
||||
CGFloat maxX = CGRectGetMaxX(barView.frame) + padding;
|
||||
if ((point.x >= minX) && (point.x <= maxX))
|
||||
{
|
||||
selectedIndex = index;
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
return selectedIndex;
|
||||
}
|
||||
|
||||
- (UIView *)barViewForForPoint:(CGPoint)point
|
||||
{
|
||||
UIView *barView = nil;
|
||||
NSInteger selectedIndex = [self barViewIndexForPoint:point];
|
||||
if (selectedIndex >= 0)
|
||||
{
|
||||
return [self.barViews objectAtIndex:[self barViewIndexForPoint:point]];
|
||||
}
|
||||
return barView;
|
||||
}
|
||||
|
||||
- (void)touchesBeganOrMovedWithTouches:(NSSet *)touches
|
||||
{
|
||||
if (self.state == JBChartViewStateCollapsed || [[self.chartDataDictionary allKeys] count] <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UITouch *touch = [touches anyObject];
|
||||
CGPoint touchPoint = [touch locationInView:self];
|
||||
UIView *barView = [self barViewForForPoint:touchPoint];
|
||||
if (barView == nil)
|
||||
{
|
||||
[self setVerticalSelectionViewVisible:NO animated:YES];
|
||||
return;
|
||||
}
|
||||
CGRect barViewFrame = barView.frame;
|
||||
CGRect selectionViewFrame = self.verticalSelectionView.frame;
|
||||
selectionViewFrame.origin.x = barViewFrame.origin.x;
|
||||
selectionViewFrame.size.width = barViewFrame.size.width;
|
||||
|
||||
if ([self.dataSource respondsToSelector:@selector(shouldExtendSelectionViewIntoHeaderPaddingForChartView:)])
|
||||
{
|
||||
if ([self.dataSource shouldExtendSelectionViewIntoHeaderPaddingForChartView:self])
|
||||
{
|
||||
selectionViewFrame.origin.y = self.headerView.frame.size.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
selectionViewFrame.origin.y = self.headerView.frame.size.height + self.headerPadding;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
selectionViewFrame.origin.y = self.headerView.frame.size.height + self.headerPadding;
|
||||
}
|
||||
|
||||
self.verticalSelectionView.frame = selectionViewFrame;
|
||||
[self setVerticalSelectionViewVisible:YES animated:YES];
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(barChartView:didSelectBarAtIndex:touchPoint:)])
|
||||
{
|
||||
[self.delegate barChartView:self didSelectBarAtIndex:[self barViewIndexForPoint:touchPoint] touchPoint:touchPoint];
|
||||
}
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(barChartView:didSelectBarAtIndex:)])
|
||||
{
|
||||
[self.delegate barChartView:self didSelectBarAtIndex:[self barViewIndexForPoint:touchPoint]];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)touchesEndedOrCancelledWithTouches:(NSSet *)touches
|
||||
{
|
||||
if (self.state == JBChartViewStateCollapsed || [[self.chartDataDictionary allKeys] count] <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
[self setVerticalSelectionViewVisible:NO animated:YES];
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(didDeselectBarChartView:)])
|
||||
{
|
||||
[self.delegate didDeselectBarChartView:self];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Touches
|
||||
|
||||
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
[self setVerticalSelectionViewVisible:NO animated:NO];
|
||||
[self touchesBeganOrMovedWithTouches:touches];
|
||||
}
|
||||
|
||||
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
[self touchesBeganOrMovedWithTouches:touches];
|
||||
}
|
||||
|
||||
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
[self touchesEndedOrCancelledWithTouches:touches];
|
||||
}
|
||||
|
||||
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
|
||||
{
|
||||
[self touchesEndedOrCancelledWithTouches:touches];
|
||||
}
|
||||
|
||||
#pragma mark - JBGradientBarViewDelegate
|
||||
|
||||
- (CGRect)chartViewBoundsForGradientBarView:(JBGradientBarView *)gradientBarView
|
||||
{
|
||||
return self.bounds;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation JBGradientBarView
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self)
|
||||
{
|
||||
[self construct];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self)
|
||||
{
|
||||
[self construct];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Setters
|
||||
|
||||
- (void)setGradientLayer:(CAGradientLayer *)gradientLayer
|
||||
{
|
||||
if (_gradientLayer != nil)
|
||||
{
|
||||
[_gradientLayer removeFromSuperlayer];
|
||||
_gradientLayer = nil;
|
||||
}
|
||||
|
||||
_gradientLayer = gradientLayer;
|
||||
_gradientLayer.masksToBounds = YES;
|
||||
[self.layer insertSublayer:_gradientLayer atIndex:0];
|
||||
}
|
||||
|
||||
#pragma mark - Construction
|
||||
|
||||
- (void)construct
|
||||
{
|
||||
self.clipsToBounds = YES;
|
||||
}
|
||||
|
||||
#pragma mark - Setters
|
||||
|
||||
- (void)setFrame:(CGRect)frame
|
||||
{
|
||||
[super setFrame:frame];
|
||||
|
||||
if ([self.delegate respondsToSelector:@selector(chartViewBoundsForGradientBarView:)])
|
||||
{
|
||||
_gradientLayer.frame = [self.delegate chartViewBoundsForGradientBarView:self]; // gradient is as large as the chart
|
||||
_gradientLayer.frame = CGRectOffset(_gradientLayer.frame, -CGRectGetMinX(frame), 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
_gradientLayer.frame = self.bounds;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,170 +0,0 @@
|
||||
//
|
||||
// JBChartView.h
|
||||
// JBChartView
|
||||
//
|
||||
// Created by Terry Worona on 9/4/13.
|
||||
// Copyright (c) 2013 Jawbone. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
extern CGFloat const kJBChartViewDefaultAnimationDuration;
|
||||
|
||||
@class JBChartView;
|
||||
|
||||
/**
|
||||
* At a minimum, a chart can support two states, along with animations to-and-from.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, JBChartViewState){
|
||||
/**
|
||||
* Expanded state: chart supports touches, interaction, etc.
|
||||
*/
|
||||
JBChartViewStateExpanded,
|
||||
/**
|
||||
* Collapse state: chart is more-or-less disabled at this point.
|
||||
*/
|
||||
JBChartViewStateCollapsed
|
||||
};
|
||||
|
||||
@protocol JBChartViewDataSource <NSObject>
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* Returns whether or not the chart's selection view should extend into the header padding.
|
||||
*
|
||||
* Default: NO
|
||||
*
|
||||
* @param chartView The chart object requesting this information.
|
||||
*
|
||||
* @return Whether or not a chart's selection view should extend into the header padding.
|
||||
*/
|
||||
- (BOOL)shouldExtendSelectionViewIntoHeaderPaddingForChartView:(JBChartView *)chartView;
|
||||
|
||||
/**
|
||||
* Returns whether or not the chart's selection view should extend into the footer padding.
|
||||
*
|
||||
* Default: NO
|
||||
*
|
||||
* @param chartView The chart object requesting this information.
|
||||
*
|
||||
* @return Whether or not a chart's selection view should extend into the footer padding.
|
||||
*/
|
||||
- (BOOL)shouldExtendSelectionViewIntoFooterPaddingForChartView:(JBChartView *)chartView;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JBChartViewDelegate <NSObject>
|
||||
|
||||
// Extend (via subclass) to add custom functionality
|
||||
|
||||
@end
|
||||
|
||||
@interface JBChartView : UIView
|
||||
|
||||
/*
|
||||
* Base dataSource and delegate protocols.
|
||||
*/
|
||||
@property (nonatomic, weak) id<JBChartViewDataSource> dataSource;
|
||||
@property (nonatomic, weak) id<JBChartViewDelegate> delegate;
|
||||
|
||||
/**
|
||||
* Header and footer views are shown above and below the chart respectively.
|
||||
* Each view will be stretched horizontally to fill width of chart.
|
||||
* Each view's bounds are clipped to support chart state animations.
|
||||
*/
|
||||
@property (nonatomic, strong) UIView *footerView;
|
||||
@property (nonatomic, strong) UIView *headerView;
|
||||
|
||||
/**
|
||||
* The vertical padding between the header and highest chart point (bar, line, etc).
|
||||
* By default, the selection view will extend into the header padding area. To modify this behaviour,
|
||||
* implement the dataSource protocol - (BOOL)shouldExtendSelectionViewIntoHeaderPaddingForChartView:(JBChartView *)chartView.
|
||||
*/
|
||||
@property (nonatomic, assign) CGFloat headerPadding;
|
||||
|
||||
/**
|
||||
* The vertical padding between the footer and lowest chart point (bar, line, etc).
|
||||
* By default, the selection view will extend into the footer padding area. To modify this behaviour,
|
||||
* implement the dataSource protocol - (BOOL)shouldExtendSelectionViewIntoFooterPaddingForChartView:(JBChartView *)chartView.
|
||||
*/
|
||||
@property (nonatomic, assign) CGFloat footerPadding;
|
||||
|
||||
/**
|
||||
* The minimum and maxmimum values of the chart.
|
||||
* If no value(s) are supplied:
|
||||
*
|
||||
* minimumValue = chart's data source min value.
|
||||
* maxmimumValue = chart's data source max value.
|
||||
*
|
||||
* If value(s) are supplied, they must be >= 0, otherwise an assertion will be thrown.
|
||||
* The min/max values are clamped to the ceiling and floor of the actual min/max values of the chart's data source;
|
||||
* for example, if a maximumValue of 20 is supplied & the chart's actual max is 100, then 100 will be used.
|
||||
*
|
||||
* For min/max modifications to take effect, reloadData must be called.
|
||||
*/
|
||||
@property (nonatomic, assign) CGFloat minimumValue;
|
||||
@property (nonatomic, assign) CGFloat maximumValue;
|
||||
|
||||
// reset to default (chart's data source min & max value)
|
||||
- (void)resetMinimumValue;
|
||||
- (void)resetMaximumValue;
|
||||
|
||||
/**
|
||||
* Charts can either be expanded or contracted.
|
||||
* By default, a chart should be expanded on initialization.
|
||||
*/
|
||||
@property (nonatomic, assign) JBChartViewState state;
|
||||
|
||||
/**
|
||||
* Acts similiar to a UITableView's reloadData function.
|
||||
* The entire chart will be torn down and re-constructed via datasource and delegate protocls.
|
||||
* If a chart's frame changes, reloadData must be called directly afterwards for the changes to take effect.
|
||||
*/
|
||||
- (void)reloadData;
|
||||
|
||||
/**
|
||||
* State setter.
|
||||
*
|
||||
* @param state Either collapse or expanded.
|
||||
* @param animated Whether or not the state should be animated or not.
|
||||
* @param force If current state == new state, then setting force to YES will re-configure the chart (default NO).
|
||||
* @param callback Called once the animation is completed. If animated == NO, then callback is immediate.
|
||||
*/
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated force:(BOOL)force callback:(void (^)())callback;
|
||||
|
||||
/**
|
||||
* State setter.
|
||||
*
|
||||
* @param state Either collapse or expanded.
|
||||
* @param animated Whether or not the state should be animated or not.
|
||||
* @param callback Called once the animation is completed. If animated == NO, then callback is immediate.
|
||||
*/
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated callback:(void (^)())callback;
|
||||
|
||||
/**
|
||||
* State setter.
|
||||
*
|
||||
* @param state Either collapse or expanded.
|
||||
* @param animated Whether or not the state should be animated or not.
|
||||
*/
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated;
|
||||
|
||||
@end
|
||||
|
||||
/**
|
||||
* A simple UIView subclass that fades a base color from current alpha to 0.0 (vertically).
|
||||
* Used as a vertical selection view in JBChartView subclasses.
|
||||
*/
|
||||
@interface JBChartVerticalSelectionView : UIView
|
||||
|
||||
/**
|
||||
* Base selection view color. This color will be faded to transparent vertically.
|
||||
*
|
||||
* Default: white color.
|
||||
*
|
||||
*/
|
||||
@property (nonatomic, strong) UIColor *bgColor;
|
||||
|
||||
@end
|
||||
@@ -1,235 +0,0 @@
|
||||
//
|
||||
// JBChartView.m
|
||||
// Nudge
|
||||
//
|
||||
// Created by Terry Worona on 9/4/13.
|
||||
// Copyright (c) 2013 Jawbone. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JBChartView.h"
|
||||
|
||||
// Numerics
|
||||
CGFloat const kJBChartViewDefaultAnimationDuration = 0.25f;
|
||||
|
||||
// Color (JBChartSelectionView)
|
||||
static UIColor *kJBChartVerticalSelectionViewDefaultBgColor = nil;
|
||||
|
||||
@interface JBChartView ()
|
||||
|
||||
@property (nonatomic, assign) BOOL hasMaximumValue;
|
||||
@property (nonatomic, assign) BOOL hasMinimumValue;
|
||||
|
||||
// Construction
|
||||
- (void)constructChartView;
|
||||
|
||||
// Validation
|
||||
- (void)validateHeaderAndFooterHeights;
|
||||
|
||||
@end
|
||||
|
||||
@implementation JBChartView
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
|
||||
- (id)initWithCoder:(NSCoder *)aDecoder
|
||||
{
|
||||
self = [super initWithCoder:aDecoder];
|
||||
if (self)
|
||||
{
|
||||
[self constructChartView];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self)
|
||||
{
|
||||
[self constructChartView];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
{
|
||||
return [self initWithFrame:CGRectZero];
|
||||
}
|
||||
|
||||
#pragma mark - Construction
|
||||
|
||||
- (void)constructChartView
|
||||
{
|
||||
self.clipsToBounds = YES;
|
||||
}
|
||||
|
||||
#pragma mark - Public
|
||||
|
||||
- (void)reloadData
|
||||
{
|
||||
// Override
|
||||
}
|
||||
|
||||
#pragma mark - Validation
|
||||
|
||||
- (void)validateHeaderAndFooterHeights
|
||||
{
|
||||
NSAssert((self.headerView.bounds.size.height + self.footerView.bounds.size.height) <= self.bounds.size.height, @"JBChartView // the combined height of the footer and header can not be greater than the total height of the chart.");
|
||||
}
|
||||
|
||||
#pragma mark - Setters
|
||||
|
||||
- (void)setHeaderView:(UIView *)headerView
|
||||
{
|
||||
if (_headerView)
|
||||
{
|
||||
[_headerView removeFromSuperview];
|
||||
_headerView = nil;
|
||||
}
|
||||
_headerView = headerView;
|
||||
_headerView.clipsToBounds = YES;
|
||||
|
||||
[self validateHeaderAndFooterHeights];
|
||||
|
||||
[self addSubview:_headerView];
|
||||
[self reloadData];
|
||||
}
|
||||
|
||||
- (void)setFooterView:(UIView *)footerView
|
||||
{
|
||||
if (_footerView)
|
||||
{
|
||||
[_footerView removeFromSuperview];
|
||||
_footerView = nil;
|
||||
}
|
||||
_footerView = footerView;
|
||||
_footerView.clipsToBounds = YES;
|
||||
|
||||
[self validateHeaderAndFooterHeights];
|
||||
|
||||
[self addSubview:_footerView];
|
||||
[self reloadData];
|
||||
}
|
||||
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated force:(BOOL)force callback:(void (^)())callback
|
||||
{
|
||||
if ((_state == state) && !force)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_state = state;
|
||||
|
||||
// Override
|
||||
}
|
||||
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated callback:(void (^)())callback
|
||||
{
|
||||
[self setState:state animated:animated force:NO callback:callback];
|
||||
}
|
||||
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated
|
||||
{
|
||||
[self setState:state animated:animated callback:nil];
|
||||
}
|
||||
|
||||
- (void)setState:(JBChartViewState)state
|
||||
{
|
||||
[self setState:state animated:NO];
|
||||
}
|
||||
|
||||
- (void)setMinimumValue:(CGFloat)minimumValue
|
||||
{
|
||||
NSAssert(minimumValue >= 0, @"JBChartView // the minimumValue must be >= 0.");
|
||||
_minimumValue = minimumValue;
|
||||
_hasMinimumValue = YES;
|
||||
}
|
||||
|
||||
- (void)setMaximumValue:(CGFloat)maximumValue
|
||||
{
|
||||
NSAssert(maximumValue >= 0, @"JBChartView // the maximumValue must be >= 0.");
|
||||
_maximumValue = maximumValue;
|
||||
_hasMaximumValue = YES;
|
||||
}
|
||||
|
||||
- (void)resetMinimumValue
|
||||
{
|
||||
_hasMinimumValue = NO; // clears min
|
||||
}
|
||||
|
||||
- (void)resetMaximumValue
|
||||
{
|
||||
_hasMaximumValue = NO; // clears max
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation JBChartVerticalSelectionView
|
||||
|
||||
#pragma mark - Alloc/Init
|
||||
|
||||
+ (void)initialize
|
||||
{
|
||||
if (self == [JBChartVerticalSelectionView class])
|
||||
{
|
||||
kJBChartVerticalSelectionViewDefaultBgColor = [UIColor whiteColor];
|
||||
}
|
||||
}
|
||||
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self)
|
||||
{
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Drawing
|
||||
|
||||
- (void)drawRect:(CGRect)rect
|
||||
{
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
[[UIColor clearColor] set];
|
||||
CGContextFillRect(context, rect);
|
||||
|
||||
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
|
||||
CGFloat locations[] = { 0.0, 1.0 };
|
||||
|
||||
NSArray *colors = nil;
|
||||
if (self.bgColor != nil)
|
||||
{
|
||||
colors = @[(__bridge id)self.bgColor.CGColor, (__bridge id)[self.bgColor colorWithAlphaComponent:0.0].CGColor];
|
||||
}
|
||||
else
|
||||
{
|
||||
colors = @[(__bridge id)kJBChartVerticalSelectionViewDefaultBgColor.CGColor, (__bridge id)[kJBChartVerticalSelectionViewDefaultBgColor colorWithAlphaComponent:0.0].CGColor];
|
||||
}
|
||||
|
||||
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);
|
||||
|
||||
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
|
||||
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
|
||||
|
||||
CGContextSaveGState(context);
|
||||
{
|
||||
CGContextAddRect(context, rect);
|
||||
CGContextClip(context);
|
||||
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
|
||||
}
|
||||
CGContextRestoreGState(context);
|
||||
|
||||
CGGradientRelease(gradient);
|
||||
CGColorSpaceRelease(colorSpace);
|
||||
}
|
||||
|
||||
#pragma mark - Setters
|
||||
|
||||
- (void)setBgColor:(UIColor *)bgColor
|
||||
{
|
||||
_bgColor = bgColor;
|
||||
[self setNeedsDisplay];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,433 +0,0 @@
|
||||
//
|
||||
// JBLineChartView.h
|
||||
// JBChartView
|
||||
//
|
||||
// Created by Terry Worona on 9/4/13.
|
||||
// Copyright (c) 2013 Jawbone. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JBChartView.h"
|
||||
|
||||
@class JBLineChartView;
|
||||
|
||||
/**
|
||||
* Current support for two line styles: solid (default) and dashed.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, JBLineChartViewLineStyle){
|
||||
/**
|
||||
* Solid line.
|
||||
*/
|
||||
JBLineChartViewLineStyleSolid,
|
||||
/**
|
||||
* Dashed line with a phase of 3:2 (3 points dashed, 2 points spaced).
|
||||
*/
|
||||
JBLineChartViewLineStyleDashed
|
||||
};
|
||||
|
||||
/**
|
||||
* Current support for two line color styles: solid (default) and gradient.
|
||||
*/
|
||||
typedef NS_ENUM(NSInteger, JBLineChartViewLineColorStyle){
|
||||
/**
|
||||
* Solid line and fill color.
|
||||
*/
|
||||
JBLineChartViewLineColorStyleSolid,
|
||||
/**
|
||||
* Gradient line and fill color.
|
||||
*/
|
||||
JBLineChartViewLineColorStyleGradient
|
||||
};
|
||||
|
||||
@protocol JBLineChartViewDataSource <JBChartViewDataSource>
|
||||
|
||||
@required
|
||||
|
||||
/**
|
||||
* Returns the number of lines for the line chart.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
*
|
||||
* @return The number of lines in the line chart.
|
||||
*/
|
||||
- (NSUInteger)numberOfLinesInLineChartView:(JBLineChartView *)lineChartView;
|
||||
|
||||
/**
|
||||
* Returns the number of vertical values for a particular line at lineIndex within the chart.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The number of vertical values for a given line in the line chart.
|
||||
*/
|
||||
- (NSUInteger)lineChartView:(JBLineChartView *)lineChartView numberOfVerticalValuesAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* Returns whether or not a line should show a dot for each point.
|
||||
* Dot size is relative to the line width and not adjustable.
|
||||
* Dot color is equal to the line color and not adjustable.
|
||||
*
|
||||
* Default: NO.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return Whether or not a line should show a dot for each chart point.
|
||||
*/
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView showsDotsForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns whether or not a line should be rendered with curved connections and rounded end caps.
|
||||
*
|
||||
* Default: NO.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return Whether or not a line should smooth it's connections and end caps.
|
||||
*/
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView smoothLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the opacity value to be used for dimming the line & fill during selection events.
|
||||
* This value is applied to the line or fill's opacity anytime it's not selected (but another line is).
|
||||
* This applies to both solid and gradient line styles.
|
||||
*
|
||||
* Default: 0.2.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return A value between 0.0 and 1.0 (will be clamped accordingly).
|
||||
*/
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView dimmedSelectionOpacityAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns a (custom) UIView instance representing a dot (x,y point) within the chart.
|
||||
* For this value to apply, showsDotsForLineAtLineIndex: must return YES for the line at lineIndex.
|
||||
* This protocol supercedes colorForDotAtHorizontalIndex: and dotRadiusForDotAtHorizontalIndex:.
|
||||
* If nil is returned. the original dot protocols will take precedence. During selection events, a custom
|
||||
* dot view will not be hidden unless lineChartView:shouldHideDotViewOnSelectionAtHorizontalIndex:atLineIndex:
|
||||
* is implemented.
|
||||
*
|
||||
* Default: nil.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis).
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return A custom UIView instance representing a dot at a particular horizontal index within a dotted line.
|
||||
*/
|
||||
- (UIView *)lineChartView:(JBLineChartView *)lineChartView dotViewAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns whether or not a (custom) dot view should be hidden on selection events.
|
||||
*
|
||||
* Default: NO.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis).
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return Whether or not a (custom) dot view should be hidden on selection events.
|
||||
*/
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView shouldHideDotViewOnSelectionAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JBLineChartViewDelegate <JBChartViewDelegate>
|
||||
|
||||
@required
|
||||
|
||||
/**
|
||||
* Vertical value for a line point at a given index (left to right). There is no ceiling on the the height;
|
||||
* the chart will automatically normalize all values between the overal min and max heights.
|
||||
* NAN may able be retuend to indicate missing values. The chart's line will begin at the first non-NAN value and end at the last non-NAN value.
|
||||
* Furthermore, the line will interopolate any NAN values in between (ie. the line will not be interrupted).
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis).
|
||||
* @param lineIndex An index number identifying the closest line in the chart to the current touch point.
|
||||
*
|
||||
* @return The y-axis value of the supplied line index (x-axis)
|
||||
*/
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView verticalValueForHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
@optional
|
||||
|
||||
/**
|
||||
* Occurs whenever there is a touch gesture on the chart (chart must be expanded).
|
||||
* The horizontal index is the closest index to the touch point & is clamped to it's max/min value if it moves outside of the view's bounds.
|
||||
* The lineIndex remains constant until the line is deselected and will be highlighted using the (optional) selectionColorForLineAtLineIndex: protocol.
|
||||
* Futhermore, all other lines that aren't selected will be dimmed to 20% opacity (default) throughout the duration of the touch/move.
|
||||
* Any dotted line that isn't the primary selection will have it's dots dimmed to hidden (to avoid transparency issues).
|
||||
*
|
||||
* @param lineChartView A line chart object informing the delegate about the new selection.
|
||||
* @param lineIndex An index number identifying the closest line in the chart to the current touch
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis).
|
||||
* @param touchPoint The touch point in relation to the chart's bounds (excludes footer and header).
|
||||
*/
|
||||
- (void)lineChartView:(JBLineChartView *)lineChartView didSelectLineAtIndex:(NSUInteger)lineIndex horizontalIndex:(NSUInteger)horizontalIndex touchPoint:(CGPoint)touchPoint;
|
||||
- (void)lineChartView:(JBLineChartView *)lineChartView didSelectLineAtIndex:(NSUInteger)lineIndex horizontalIndex:(NSUInteger)horizontalIndex;
|
||||
|
||||
/**
|
||||
* Occurs when selection ends by ending a touch event. For selection start events, see: didSelectChartAtIndex:
|
||||
*
|
||||
* @param lineChartView A line chart object informing the delegate about the deselection.
|
||||
*/
|
||||
- (void)didDeselectLineInLineChartView:(JBLineChartView *)lineChartView;
|
||||
|
||||
/**
|
||||
* Returns whether or not a line at a particular index responds to selection events.
|
||||
*
|
||||
* Default: YES
|
||||
*
|
||||
* @param lineChartView A line chart object informing the delegate about the new selection.
|
||||
* @param lineIndex An index number identifying the closest line in the chart to the current touch
|
||||
*/
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView shouldIgnoreSelectionAtIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the color of particular line at lineIndex within the chart.
|
||||
*
|
||||
* Default: black color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The color to be used to shade a line in the chart.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView colorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the gradient layer to be used for a particular line at lineIndex within the chart.
|
||||
*
|
||||
* Default: black to light gray.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The gradient layer to be used as a mask for the line in the chart.
|
||||
*/
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView gradientForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the fill color of particular line at lineIndex within the chart.
|
||||
*
|
||||
* Default: clear color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The fill color to show under a line in the chart.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView fillColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the gradient layer to be used for a fill of a particular line at lineIndex within the chart.
|
||||
*
|
||||
* Default: white to light gray.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The fill color to show under a line in the chart.
|
||||
*/
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView fillGradientForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the color of a particular dot in a line at lineIndex within the chart.
|
||||
* For this value to apply, showsDotsForLineAtLineIndex: must return YES for the line at lineIndex.
|
||||
* Any value can be returned for lineIndex's that don't support dots, as it will never be called.
|
||||
*
|
||||
* Default: black color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis)
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The color to be used to color a dot within a dotted line in the chart.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView colorForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the width of particular line at lineIndex within the chart.
|
||||
*
|
||||
* Default: 5 points.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The width to be used to draw a line in the chart.
|
||||
*/
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView widthForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the radius of all dots in a particular line at lineIndex within the chart.
|
||||
* For this value to apply, showsDotsForLineAtLineIndex: must return YES for the line at lineIndex.
|
||||
* Any value can be returned for lineIndex's that don't support dots, as it will never be called.
|
||||
*
|
||||
* Default: line width x 6.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis).
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The radius of the dots within a dotted line in the chart.
|
||||
*/
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView dotRadiusForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the width of the (vertical) selection view to be overlayed on the chart during touch events.
|
||||
* The property showsVerticalSelection must be YES for the width to apply. The width is clamped to the
|
||||
* maxmimum width of the chart's bounds.
|
||||
*
|
||||
* Default: 20px.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
*
|
||||
* @return The width of the selection view used during chart selections.
|
||||
*/
|
||||
- (CGFloat)verticalSelectionWidthForLineChartView:(JBLineChartView *)lineChartView;
|
||||
|
||||
/**
|
||||
* Returns the (vertical) selection color to be overlayed on the chart during touch events on a given line.
|
||||
* The color is automically faded to transparent (vertically). The property showsVerticalSelection
|
||||
* must be YES for the color to apply.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The color of the selection view used during chart selections of the given line.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView verticalSelectionColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the selection color to be overlayed on a line within the chart during touch events.
|
||||
* The property showsLineSelection must be YES for the color to apply.
|
||||
*
|
||||
* Default: white color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The color to be used to highlight a line during chart selections.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the gradient layer to be overlayed on a line during touch events.
|
||||
* Alpha of gradient is controlled by the color returned from lineChartView:selectionColorForLineAtLineIndex:
|
||||
*
|
||||
* Default: matches lineChartView:gradientForLineAtLineIndex:.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The gradient layer to be used as a mask for the line in the chart.
|
||||
*/
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView selectionGradientForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the selection fill color to be overlayed under a line within the chart during touch events.
|
||||
* The property showsLineSelection must be YES for the color to apply.
|
||||
*
|
||||
* Default: clear color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The color to be used to highlight under a line during chart selections.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionFillColorForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the gradient layer to be used for the selection fill to be overlayed under a line during touch events.
|
||||
* Alpha of gradient is controlled by the color returned from lineChartView:selectionFillColorForLineAtLineIndex:
|
||||
*
|
||||
* Default: matches lineChartView:fillGradientForLineAtLineIndex.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The fill color to show under a line in the chart.
|
||||
*/
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView selectionFillGradientForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the selection color to be overlayed on a line within the chart during touch events.
|
||||
* The property showsLineSelection must be YES for the color to apply.
|
||||
*
|
||||
* Default: white color.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis).
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The color to be used to highlight a dot within a dotted line during chart selections.
|
||||
*/
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionColorForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the line style of a particular line at lineIndex within the chart.
|
||||
* See JBLineChartViewLineStyle for line style descriptions.
|
||||
*
|
||||
* Default: JBLineChartViewLineStyleSolid.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The line style to be used to draw a line in the chart.
|
||||
*/
|
||||
- (JBLineChartViewLineStyle)lineChartView:(JBLineChartView *)lineChartView lineStyleForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
/**
|
||||
* Returns the line color style of a particular line at lineIndex within the chart.
|
||||
* See JBLineChartViewLineColorStyle for line color style descriptions.
|
||||
*
|
||||
* Default: JBLineChartViewLineColorStyleSolid.
|
||||
*
|
||||
* @param lineChartView The line chart object requesting this information.
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The line style to be used to draw a line in the chart.
|
||||
*/
|
||||
- (JBLineChartViewLineColorStyle)lineChartView:(JBLineChartView *)lineChartView lineColorStyleForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
@end
|
||||
|
||||
@interface JBLineChartView : JBChartView
|
||||
|
||||
@property (nonatomic, weak) id<JBLineChartViewDataSource> dataSource;
|
||||
@property (nonatomic, weak) id<JBLineChartViewDelegate> delegate;
|
||||
|
||||
/**
|
||||
* Vertical highlight overlayed on a line graph during touch events.
|
||||
*
|
||||
* Default: YES.
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL showsVerticalSelection;
|
||||
|
||||
/**
|
||||
* A highlight shown on a line within the graph during touch events. The highlighted line
|
||||
* is the closest line to the touch point and corresponds to the lineIndex delegatd back via
|
||||
* didSelectChartAtHorizontalIndex:atLineIndex: and didUnSlectChartAtHorizontalIndex:atLineIndex:
|
||||
*
|
||||
* Default: YES.
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL showsLineSelection;
|
||||
|
||||
/**
|
||||
* The dot view within a particular line at a horizontalIndex.
|
||||
*
|
||||
* Default: nil.
|
||||
*
|
||||
* @param horizontalIndex The 0-based horizontal index of a selection point (left to right, x-axis)
|
||||
* @param lineIndex An index number identifying a line in the chart.
|
||||
*
|
||||
* @return The UIView representing the dot view at a given horizontalIndex within a line or nil if any index is out of range.
|
||||
*/
|
||||
- (UIView *)dotViewAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
@end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,27 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaAsyncSocket'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'public domain'
|
||||
s.summary = 'An asynchronous socket networking library for Cocoa.'
|
||||
s.homepage = 'https://github.com/robbiehanson/CocoaAsyncSocket'
|
||||
s.authors = 'Dustin Voss', { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
|
||||
s.source = { :git => 'git://github.com/robbiehanson/CocoaAsyncSocket.git' }
|
||||
|
||||
s.description = 'CocoaAsyncSocket supports TCP and UDP. The AsyncSocket class is for TCP, and the AsyncUdpSocket class is for UDP. ' \
|
||||
'AsyncSocket is a TCP/IP socket networking library that wraps CFSocket and CFStream. It offers asynchronous ' \
|
||||
'operation, and a native Cocoa class complete with delegate support or use the GCD variant GCDAsyncSocket. ' \
|
||||
'AsyncUdpSocket is a UDP/IP socket networking library that wraps CFSocket. It works almost exactly like the TCP ' \
|
||||
'version, but is designed specifically for UDP. This includes queued non-blocking send/receive operations, full ' \
|
||||
'delegate support, run-loop based, self-contained class, and support for IPv4 and IPv6.'
|
||||
|
||||
s.source_files = '{GCD,RunLoop}/*.{h,m}'
|
||||
s.clean_paths = 'Vendor', 'GCD/Xcode', 'RunLoop/Xcode'
|
||||
s.requires_arc = true
|
||||
|
||||
if config.ios?
|
||||
s.frameworks = ['CFNetwork', 'Security']
|
||||
else
|
||||
s.frameworks = ['CoreServices', 'Security']
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaHTTPServer'
|
||||
s.version = '2.2.1'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A small, lightweight, embeddable HTTP server for Mac OS X or iOS applications'
|
||||
s.homepage = 'https://github.com/robbiehanson/CocoaHTTPServer'
|
||||
s.authors = { 'Robbie Hanson' => 'cocoahttpserver@googlegroups.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaHTTPServer.git', :tag => '2.2.1' }
|
||||
s.source_files = '{Core,Extensions}/**/*.{h,m}'
|
||||
s.clean_paths = %w{Samples Vendor}
|
||||
if config.ios?
|
||||
s.frameworks = 'CFNetwork', 'Security'
|
||||
else
|
||||
s.frameworks = 'CoreServices', 'Security'
|
||||
end
|
||||
s.library = 'xml2'
|
||||
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }
|
||||
s.dependency "CocoaAsyncSocket", "0.0.1"
|
||||
s.dependency "CocoaLumberjack", "1.3"
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.0.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'http://code.google.com/p/cocoalumberjack/'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.0' }
|
||||
|
||||
s.source_files = 'Lumberjack'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.1.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'http://code.google.com/p/cocoalumberjack/'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.1' }
|
||||
|
||||
s.source_files = 'Lumberjack'
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.2.1'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'http://code.google.com/p/cocoalumberjack/'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.2.1' }
|
||||
|
||||
s.description = 'It is similar in concept to other popular logging frameworks such as log4j, ' \
|
||||
'yet is designed specifically for objective-c, and takes advantage of features ' \
|
||||
'such as multi-threading, grand central dispatch (if available), lockless ' \
|
||||
'atomic operations, and the dynamic nature of the objective-c runtime.'
|
||||
|
||||
s.source_files = 'Lumberjack'
|
||||
s.clean_paths = 'Benchmarking', 'Xcode'
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.2.2'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'http://code.google.com/p/cocoalumberjack/'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.2.2' }
|
||||
|
||||
s.description = 'It is similar in concept to other popular logging frameworks such as log4j, ' \
|
||||
'yet is designed specifically for objective-c, and takes advantage of features ' \
|
||||
'such as multi-threading, grand central dispatch (if available), lockless ' \
|
||||
'atomic operations, and the dynamic nature of the objective-c runtime.'
|
||||
|
||||
s.source_files = 'Lumberjack'
|
||||
s.clean_paths = 'Benchmarking', 'Xcode'
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.2.3'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'http://code.google.com/p/cocoalumberjack/'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.2.3' }
|
||||
|
||||
s.description = 'It is similar in concept to other popular logging frameworks such as log4j, ' \
|
||||
'yet is designed specifically for objective-c, and takes advantage of features ' \
|
||||
'such as multi-threading, grand central dispatch (if available), lockless ' \
|
||||
'atomic operations, and the dynamic nature of the objective-c runtime.'
|
||||
|
||||
s.source_files = 'Lumberjack'
|
||||
s.clean_paths = 'Benchmarking', 'Xcode', 'Lumberjack/Extensions'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.2.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'http://code.google.com/p/cocoalumberjack/'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.2' }
|
||||
|
||||
s.source_files = 'Lumberjack'
|
||||
end
|
||||
@@ -0,0 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.3.1'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'https://github.com/robbiehanson/CocoaLumberjack'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.3.1' }
|
||||
|
||||
s.description = 'It is similar in concept to other popular logging frameworks such as log4j, ' \
|
||||
'yet is designed specifically for objective-c, and takes advantage of features ' \
|
||||
'such as multi-threading, grand central dispatch (if available), lockless ' \
|
||||
'atomic operations, and the dynamic nature of the objective-c runtime.'
|
||||
|
||||
s.requires_arc = true
|
||||
s.source_files = 'Lumberjack'
|
||||
s.clean_paths = 'Benchmarking', 'Xcode', 'Lumberjack/Extensions'
|
||||
end
|
||||
@@ -0,0 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.3.2'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'https://github.com/robbiehanson/CocoaLumberjack'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.3.2' }
|
||||
|
||||
s.description = 'It is similar in concept to other popular logging frameworks such as log4j, ' \
|
||||
'yet is designed specifically for objective-c, and takes advantage of features ' \
|
||||
'such as multi-threading, grand central dispatch (if available), lockless ' \
|
||||
'atomic operations, and the dynamic nature of the objective-c runtime.'
|
||||
|
||||
s.requires_arc = true
|
||||
s.source_files = 'Lumberjack'
|
||||
s.clean_paths = 'Benchmarking', 'Xcode', 'Lumberjack/Extensions'
|
||||
end
|
||||
@@ -0,0 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CocoaLumberjack'
|
||||
s.version = '1.3'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'A fast & simple, yet powerful & flexible logging framework for Mac and iOS.'
|
||||
s.homepage = 'https://github.com/robbiehanson/CocoaLumberjack'
|
||||
s.author = { 'Robbie Hanson' => 'robbiehanson@deusty.com' }
|
||||
s.source = { :git => 'https://github.com/robbiehanson/CocoaLumberjack.git',
|
||||
:tag => '1.3' }
|
||||
|
||||
s.description = 'It is similar in concept to other popular logging frameworks such as log4j, ' \
|
||||
'yet is designed specifically for objective-c, and takes advantage of features ' \
|
||||
'such as multi-threading, grand central dispatch (if available), lockless ' \
|
||||
'atomic operations, and the dynamic nature of the objective-c runtime.'
|
||||
|
||||
s.requires_arc = true
|
||||
s.source_files = 'Lumberjack'
|
||||
s.clean_paths = 'Benchmarking', 'Xcode', 'Lumberjack/Extensions'
|
||||
end
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
:min: "0.6.0rc1"
|
||||
:last: "0.6.0rc1"
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Color-Picker-for-iOS'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'BSD'
|
||||
s.platform = :ios
|
||||
s.summary = 'ColorPicker for iPhone and iPod touch'
|
||||
s.homepage = 'https://github.com/hayashi311'
|
||||
s.author = { 'Ryota Hayashi' => 'hayashi311' }
|
||||
s.source = { :git => 'https://github.com/hayashi311/Color-Picker-for-iOS.git',
|
||||
:commit => '711b2981d29f0cfb7f7b258b79783bc650fa980e' }
|
||||
s.source_files = 'ColorPicker/*.{h,m}'
|
||||
s.frameworks = 'UIKit' , 'QuartzCore'
|
||||
s.clean_paths = "Sample", "CHANGE_ja.md" , 'TODO_ja.md'
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ConciseKit'
|
||||
s.version = '0.1.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A set of Objective-C additions and macros that lets you write code more quickly.'
|
||||
s.homepage = 'http://github.com/petejkim/ConciseKit'
|
||||
s.author = { 'Peter Jihoon Kim' => 'raingrove@gmail.com' }
|
||||
|
||||
s.source = { :git => 'http://github.com/petejkim/ConciseKit.git', :tag => 'v0.1.0' }
|
||||
|
||||
s.source_files = 'src/**/*.{h,m}'
|
||||
|
||||
s.clean_paths = 'ConciseKitSpecs'
|
||||
|
||||
s.frameworks = 'Foundation'
|
||||
end
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ConciseKit'
|
||||
s.version = '0.1.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A set of Objective-C additions and macros that lets you write code more quickly.'
|
||||
s.homepage = 'http://github.com/petejkim/ConciseKit'
|
||||
s.author = { 'Peter Jihoon Kim' => 'raingrove@gmail.com' }
|
||||
|
||||
s.source = { :git => 'http://github.com/petejkim/ConciseKit.git', :tag => 'v0.1.1' }
|
||||
|
||||
s.source_files = 'src/**/*.{h,m}'
|
||||
|
||||
s.clean_paths = 'ConciseKitSpecs'
|
||||
|
||||
s.frameworks = 'Foundation'
|
||||
end
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ConciseKit'
|
||||
s.version = '0.1.2'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A set of Objective-C additions and macros that lets you write code more quickly.'
|
||||
s.homepage = 'http://github.com/petejkim/ConciseKit'
|
||||
s.author = { 'Peter Jihoon Kim' => 'raingrove@gmail.com' }
|
||||
|
||||
s.source = { :git => 'http://github.com/petejkim/ConciseKit.git', :tag => 'v0.1.2' }
|
||||
|
||||
s.source_files = 'src/**/*.{h,m}'
|
||||
|
||||
s.clean_paths = 'ConciseKitSpecs'
|
||||
|
||||
s.frameworks = 'Foundation'
|
||||
end
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CorePlot'
|
||||
s.version = '1.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Cocoa plotting framework for Mac OS X and iOS.'
|
||||
s.homepage = 'http://code.google.com/p/core-plot/'
|
||||
s.authors = { 'Drew McCormack' => 'drewmccormack@mac.com',
|
||||
'Brad Larson' => 'larson@sunsetlakesoftware.com',
|
||||
'Eric Skroch' => 'eskroch@mac.com',
|
||||
'Barry Wark' => 'barrywark@gmail.com' }
|
||||
s.source = { :hg => 'https://code.google.com/p/core-plot', :revision => 'release_1.0' }
|
||||
|
||||
s.description = 'Core Plot is a plotting framework for OS X and iOS. It provides 2D visualization ' \
|
||||
'of data, and is tightly integrated with Apple technologies like Core Animation, ' \
|
||||
'Core Data, and Cocoa Bindings.'
|
||||
|
||||
files = FileList['framework/TestResources/CorePlotProbes.d', 'framework/Source/*.{h,m}']
|
||||
files.exclude(/(TestCase|Tests)\.[hm]/)
|
||||
if config.ios?
|
||||
files.include('framework/CorePlot-CocoaTouch.h', 'framework/iPhoneOnly/*.{h,m}')
|
||||
else
|
||||
files.include('framework/CorePlot.h', 'framework/MacOnly/*.{h,m}')
|
||||
end
|
||||
s.source_files = files
|
||||
|
||||
s.clean_paths = 'documentation', 'examples', 'scripts', 'QCPlugin', 'framework/*.{xcodeproj,lproj}'
|
||||
s.framework = 'QuartzCore'
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'CupertinoYankee'
|
||||
s.version = '0.1.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'An NSDate Category With Locale-Aware Calculations for Beginning & End of Day, Week, Month, and Year'
|
||||
s.homepage = 'https://github.com/mattt/CupertinoYankee'
|
||||
s.authors = {'Mattt Thompson' => 'm@mattt.me'}
|
||||
s.source = { :git => 'https://github.com/mattt/CupertinoYankee.git', :tag => '0.1.0' }
|
||||
s.source_files = 'NSDate+CupertinoYankee.{h,m}'
|
||||
s.clean_paths = ['Example']
|
||||
end
|
||||
@@ -1,196 +0,0 @@
|
||||
## Customization
|
||||
|
||||
Both the line and bar charts support a robust set of customization options.
|
||||
|
||||
The background of a bar or line chart can be set just like any other view:
|
||||
|
||||
self.barChartView.backgroundColor = ...; // UIColor
|
||||
self.lineChartView.backgroundColor = ...; // UIColor
|
||||
|
||||
Any <i>JBChartView</i> subclass supports the use of headers and footers (similiar to that of <i>UITableView</i>):
|
||||
|
||||
self.barChartView.footerView = ...; // UIView
|
||||
self.lineChartView.headerView = ...; // UIView
|
||||
|
||||
Lastly, any JBChartView subclass can be collapsed or expanded programmatically via the <i>state</i> property. If you chose to animate state changes, a callback helper can be used to notify you when the animation has completed:
|
||||
|
||||
- (void)setState:(JBChartViewState)state animated:(BOOL)animated callback:(void (^)())callback;
|
||||
|
||||
#### JBBarChartView
|
||||
|
||||
A bar chart can be inverted such that it's orientation is top->down (including the selection view) by setting the following property:
|
||||
|
||||
@property (nonatomic, assign, getter=isInverted) BOOL inverted;
|
||||
|
||||
By default, a chart's bars will be black and flat. They can be customized by supplying a UIView subclass through the <i>optional</i> protocol:
|
||||
|
||||
- (UIView *)barChartView:(JBBarChartView *)barChartView barViewAtIndex:(NSUInteger)index
|
||||
{
|
||||
return ...; // color of line in chart
|
||||
}
|
||||
|
||||
If you don't require a custom UIView, simply supply a color for the bar instead:
|
||||
|
||||
- (UIColor *)barChartView:(JBBarChartView *)barChartView colorForBarViewAtIndex:(NSUInteger)index;
|
||||
|
||||
If a solid color isn't your cup of tea, you can expose a gradient to be applied across the entire chart:
|
||||
|
||||
- (CAGradientLayer *)barGradientForBarChartView:(JBBarChartView *)barChartView;
|
||||
|
||||
Furthermore, the color of the selection bar (on touch events) can be customized via the <i>optional</i> protocol:
|
||||
|
||||
- (UIColor *)barSelectionColorForBarChartView:(JBBarChartView *)barChartView
|
||||
{
|
||||
return ...; // color of selection view
|
||||
}
|
||||
|
||||
<b>Note</b>: The delegate will request a custom UIView, followed by a color and lastly a gradient. If nothing is supplied, a plain black bar will be used.
|
||||
|
||||
Lastly, a bar chart's selection events are delegated back via:
|
||||
|
||||
- (void)barChartView:(JBBarChartView *)barChartView didSelectBarAtIndex:(NSUInteger)index touchPoint:(CGPoint)touchPoint
|
||||
{
|
||||
// Update view
|
||||
}
|
||||
|
||||
- (void)didDeselectBarChartView:(JBBarChartView *)barChartView
|
||||
{
|
||||
// Update view
|
||||
}
|
||||
|
||||
The <b>touchPoint</b> is especially important as it allows you to add custom elements to your chart during selection events. Refer to the demo project (<b>JBarChartViewController</b>) to see how a tooltip can be used to display additional information during selection events.
|
||||
|
||||
#### JBLineChartView
|
||||
|
||||
The color, width and style of each line in the chart can be customized via the <i>optional</i> protocol:
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView colorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // color of line in chart
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView fillColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // color of area under line in chart
|
||||
}
|
||||
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView widthForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // width of line in chart
|
||||
}
|
||||
|
||||
- (JBLineChartViewLineStyle)lineChartView:(JBLineChartView *)lineChartView lineStyleForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // style of line in chart
|
||||
}
|
||||
|
||||
Additionally, the line style of a line can be customzized via the <i>optional</i> protocol. If a gradient is used, the color for the line and fill of the line will control the alpha value of the gradient.
|
||||
|
||||
- (JBLineChartViewLineColorStyle)lineChartView:(JBLineChartView *)lineChartView lineColorStyleForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // line style of line in chart
|
||||
}
|
||||
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView gradientForLineAtLineIndex:(NSUInteger)lineIndex {
|
||||
return ...; // gradient for line in chart
|
||||
}
|
||||
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView fillGradientForLineAtLineIndex:(NSUInteger)lineIndex {
|
||||
return ...; // gradient for area under line in chart
|
||||
}
|
||||
|
||||
Defining a gradient to use is simple and flexible. For example, this would be a horizontal gradient from blue to green:
|
||||
|
||||
CAGradientLayer *gradient = [CAGradientLayer new];
|
||||
gradient.startPoint = CGPointMake(0.0, 0.0);
|
||||
gradient.endPoint = CGPointMake(1.0, 0.0);
|
||||
gradient.colors = @[(id)[UIColor blueColor].CGColor, (id)[UIColor greenColor].CGColor];
|
||||
|
||||
Furthermore, the color and width of the selection view along with the color of the selected line can be customized via the <i>optional</i> protocols:
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView verticalSelectionColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // color of selection view
|
||||
}
|
||||
|
||||
- (CGFloat)verticalSelectionWidthForLineChartView:(JBLineChartView *)lineChartView
|
||||
{
|
||||
return ...; // width of selection view
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // color of selected line
|
||||
}
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionFillColorForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // color of area under selected line
|
||||
}
|
||||
|
||||
When using a gradient for the line or fill, a different gradient can provided for selection. If the selection gradient is not provided, it will default to the line and fill gradient provided for the line.
|
||||
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView selectionGradientForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // gradient for selected line
|
||||
}
|
||||
|
||||
- (CAGradientLayer *)lineChartView:(JBLineChartView *)lineChartView selectionFillGradientForLineAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return ...; // gradient for area under selected line
|
||||
}
|
||||
|
||||
By default, each line will not show dots for each point. To enable this on a per-line basis:
|
||||
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView showsDotsForLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
To the radius of each dot (default is 6x the line width, or 3x the diameter), implement:
|
||||
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView dotRadiusForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
To customize the color of each dot during selection and non-selection events (default is white and black respectively), implement:
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView colorForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
- (UIColor *)lineChartView:(JBLineChartView *)lineChartView selectionColorForDotAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
Alternatively, you can supply your own UIView instead of using the default impelmentation:
|
||||
|
||||
- (UIView *)lineChartView:(JBLineChartView *)lineChartView dotViewAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
Custom dot views are automatically shown when selected unless the following is implemented:
|
||||
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView shouldHideDotViewOnSelectionAtHorizontalIndex:(NSUInteger)horizontalIndex atLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
As well, by default, each line will have squared off end caps and connection points. To enable rounded connections and end caps:
|
||||
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView smoothLineAtLineIndex:(NSUInteger)lineIndex;
|
||||
|
||||
Furthermore, a line chart's selection events are delegated back via:
|
||||
|
||||
- (void)lineChartView:(JBLineChartView *)lineChartView didSelectLineAtIndex:(NSUInteger)lineIndex horizontalIndex:(NSUInteger)horizontalIndex touchPoint:(CGPoint)touchPoint
|
||||
{
|
||||
// Update view
|
||||
}
|
||||
|
||||
- (void)didDeselectLineInLineChartView:(JBLineChartView *)lineChartView
|
||||
{
|
||||
// Update view
|
||||
}
|
||||
|
||||
Upon selection, all other lines (+ fills) will be dimmed to 20% opacity (default). To change this value, implement:
|
||||
|
||||
- (CGFloat)lineChartView:(JBLineChartView *)lineChartView dimmedSelectionOpacityAtLineIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
// Return new opacity (0.0 to hide completely, and 1.0 to have no effect)
|
||||
}
|
||||
|
||||
If you don't want a line to be selectable:
|
||||
|
||||
- (BOOL)lineChartView:(JBLineChartView *)lineChartView shouldIgnoreSelectionAtIndex:(NSUInteger)lineIndex
|
||||
{
|
||||
return NO; // Check line index
|
||||
}
|
||||
|
||||
The <b>touchPoint</b> is especially important as it allows you to add custom elements to your chart during selection events. Refer to the demo project (<b>JBLineChartViewController</b>) to see how a tooltip can be used to display additional information during selection events.
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'DCIntrospect'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'Introspect is small set of tools for iOS that aid in debugging user interfaces built with UIKit.'
|
||||
s.homepage = 'https://github.com/domesticcatsoftware/DCIntrospect'
|
||||
s.author = { 'Patrick Richards' => 'contact@domesticcat.com.au' }
|
||||
s.source = { :git => 'git://github.com/domesticcatsoftware/DCIntrospect.git', :commit => "3ef2c10710f007b6d699c2a0b996ce1e3a79bde0" }
|
||||
s.source_files = 'DCIntrospect'
|
||||
s.frameworks = 'QuartzCore'
|
||||
s.clean_paths = 'DCIntrospectDemo'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'DCTTextFieldValidator'
|
||||
s.version = '1.0'
|
||||
s.license = 'BSD'
|
||||
s.summary = 'Validates an array of UITextFields before allowing an action to take place.'
|
||||
s.homepage = 'https://github.com/danielctull/DCTTextFieldValidator'
|
||||
s.author = { 'Daniel Tull' => 'dt@danieltull.co.uk' }
|
||||
s.source = { :git => 'https://github.com/danielctull/DCTTextFieldValidator.git', :tag => '1.0' }
|
||||
s.description = 'DCTTextFieldValidator takes an array of UITextFields and switches the return key on the keyboard if the text fields are valid.'
|
||||
s.source_files = 'DCTTextFieldValidator.h', 'DCTTextFieldValidator.m'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -0,0 +1,23 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'DDPageControl'
|
||||
s.version = '0.1.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'An easily customizable alternative to UIKit\'s UIPageControl.'
|
||||
s.homepage = 'https://github.com/ddeville/DDPageControl'
|
||||
s.author = { 'Damien DeVille' => 'damien@realmacsoftware.com' }
|
||||
|
||||
s.source = { :git => 'git://github.com/ddeville/DDPageControl.git', :tag => '0.1' }
|
||||
s.description = 'DDPageControl redefines exactly every property and methods available in UIPageControl. Using DDPageControl without customization will actually lead exactly to a UIPageControl. However, the power of DDPageControl is that you can set some additional properties that will affect the way the look and feel of the page controls.'
|
||||
|
||||
s.platform = :ios
|
||||
|
||||
s.source_files = 'Classes/DDPageControl.{h,m}'
|
||||
|
||||
s.clean_path = "Classes/DDPageControlAppDelegate.*",
|
||||
"Classes/DDPageControlViewController.*",
|
||||
"*.xib",
|
||||
"*.pch",
|
||||
"*.plist",
|
||||
"*.xcodeproj",
|
||||
"*.m"
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'DMLocationManager'
|
||||
s.version = '1.0.0'
|
||||
s.license = 'Apache License, Version 2.0'
|
||||
s.summary = 'Convenient CLLocationManager wrapper. Control location caching, cache age and accuracy.'
|
||||
s.homepage = 'https://github.com/martinstolz/DMLocationManager'
|
||||
s.author = { 'Martin Stolz' => 'martin.stolz@devmob.de' }
|
||||
s.description = 'This CLLocationManager wrapper allows you to query for the devices location in a convenient way. Control the caching behaviour by disallowing cache or setting the maximum cache age. Loop the location determination for permanent location updates in a defined interval.'
|
||||
s.platform = :ios
|
||||
s.source = { :git => 'https://github.com/martinstolz/DMLocationManager.git', :tag => '1.0.0' }
|
||||
s.source_files = '*.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,27 @@
|
||||
Pod::Spec.new do |spec|
|
||||
spec.name = 'DTCoreText'
|
||||
spec.version = '1.0.0'
|
||||
spec.platform = :ios
|
||||
spec.license = 'BSD'
|
||||
spec.source = { :git => 'https://github.com/Cocoanetics/DTCoreText.git', :tag => '1.0.0' }
|
||||
spec.source_files = 'Core/Source/*.{h,m,c}'
|
||||
spec.clean_paths = 'Core/Test/', 'Core/DTCoreText-Info.plist', 'Core/DTCoreText-Prefix.pch', 'DTCoreText.xcodeproj/', 'Demo/', '.gitignore'
|
||||
spec.frameworks = 'MediaPlayer', 'QuartzCore', 'CoreText', 'CoreGraphics', 'ImageIO'
|
||||
spec.requires_arc = true
|
||||
spec.homepage = 'https://github.com/Cocoanetics/DTCoreText'
|
||||
spec.summary = 'Methods to allow using HTML code with CoreText.'
|
||||
spec.author = { 'Oliver Drobnik' => 'oliver@drobnik.com' }
|
||||
spec.library = 'xml2'
|
||||
spec.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SDKROOT)/usr/include/libxml2"' }
|
||||
def spec.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import <CoreText/CoreText.h>\n#endif\n#define ALLOW_IPHONE_SPECIAL_CASES 1})
|
||||
end
|
||||
Dir.chdir(config.project_pods_root + 'DTCoreText/Core/Source/') do
|
||||
Dir.glob('*.css') do |css_file|
|
||||
system '/usr/bin/xxd', '-i', css_file, css_file + '.c'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,27 @@
|
||||
Pod::Spec.new do |spec|
|
||||
spec.name = 'DTCoreText'
|
||||
spec.version = '1.0.1'
|
||||
spec.platform = :ios
|
||||
spec.license = 'BSD'
|
||||
spec.source = { :git => 'https://github.com/Cocoanetics/DTCoreText.git', :tag => '1.0.1' }
|
||||
spec.source_files = 'Core/Source/*.{h,m,c}'
|
||||
spec.clean_paths = 'Core/Test/', 'Core/DTCoreText-Info.plist', 'Core/DTCoreText-Prefix.pch', 'DTCoreText.xcodeproj/', 'Demo/', '.gitignore'
|
||||
spec.frameworks = 'MediaPlayer', 'QuartzCore', 'CoreText', 'CoreGraphics', 'ImageIO'
|
||||
spec.requires_arc = true
|
||||
spec.homepage = 'https://github.com/Cocoanetics/DTCoreText'
|
||||
spec.summary = 'Methods to allow using HTML code with CoreText.'
|
||||
spec.author = { 'Oliver Drobnik' => 'oliver@drobnik.com' }
|
||||
spec.library = 'xml2'
|
||||
spec.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SDKROOT)/usr/include/libxml2"' }
|
||||
def spec.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#ifdef __OBJC__\n#import <CoreText/CoreText.h>\n#endif\n#define ALLOW_IPHONE_SPECIAL_CASES 1})
|
||||
end
|
||||
Dir.chdir(config.project_pods_root + 'DTCoreText/Core/Source/') do
|
||||
Dir.glob('*.css') do |css_file|
|
||||
system '/usr/bin/xxd', '-i', css_file, css_file + '.c'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,16 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'DirectoryWatchdog'
|
||||
s.version = '1.0.0'
|
||||
s.license = 'Apache License 2.0'
|
||||
s.summary = 'A simpe utility class to monitor real time changes in a directory, such as the documents dir for an app with File Sharing enabled.'
|
||||
s.homepage = 'https://github.com/graetzer/DirectoryWatchdog'
|
||||
s.author = { 'Simon Grätzer' => 'simon@graetzer.org' }
|
||||
|
||||
|
||||
s.source = { :git => 'https://github.com/graetzer/DirectoryWatchdog.git', :tag => '1.0.0' }
|
||||
s.description = 'DirectoryWatchdog is a simple utility tool to monitor real time changes in local folders. '\
|
||||
'Most common use is the monitoring of an applications documents directory in combination'\
|
||||
' with iTunes file sharing support. This code uses the BSD kqueue API and should work on OSX as well as iOS.'
|
||||
|
||||
s.source_files = 'DirectoryWatchdog/lib/*.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'ECSlidingViewController'
|
||||
s.version = '0.9.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'ECSlidingViewController is a view controller container that presents its child view controllers in two layers. It provides functionality for sliding the top view to reveal the views underneath it. This functionality is inspired by the Path 2.0 and Facebook iPhone apps.'
|
||||
s.homepage = 'https://github.com/edgecase/ecslidingviewcontroller'
|
||||
s.author = { 'Mike Enriquez' => 'mike@edgecase.com' }
|
||||
s.source = { :git => 'git://github.com/edgecase/ECSlidingViewController.git', :tag => '0.9.0' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'ECSlidingViewController/Vendor/ECSlidingViewController/'
|
||||
s.clean_paths = 'ECSlidingViewController.xcodeproj'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'EGOCache'
|
||||
s.version = '0.1.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'Fast Caching for Objective-C (iPhone & Mac Compatible)'
|
||||
s.homepage = 'https://github.com/enormego/EGOCache'
|
||||
s.author = 'enormego'
|
||||
s.source = { :git => 'https://github.com/enormego/EGOCache.git',
|
||||
:commit => '8b7c7ecfc8fad396b6547ad3fef085713644f794' }
|
||||
|
||||
s.source_files = '*.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'EGOImageLoading'
|
||||
s.version = '0.0.1'
|
||||
s.platform = :ios
|
||||
s.license = 'MIT'
|
||||
s.summary = 'What if images on the iPhone were as easy as HTML?'
|
||||
s.homepage = 'https://github.com/enormego/EGOImageLoading'
|
||||
s.author = 'Shaun Harrison'
|
||||
s.source = { :git => 'git://github.com/enormego/EGOImageLoading.git',
|
||||
:commit => '9a3fa6b657c6b8217a24ff87c1fe4f670401f3bd' }
|
||||
|
||||
s.source_files = 'EGO*/*.{h,m}'
|
||||
s.clean_paths = 'Demo'
|
||||
s.dependency 'EGOCache'
|
||||
end
|
||||
@@ -0,0 +1,16 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'EGOTableViewPullRefresh'
|
||||
s.version = '0.1.0'
|
||||
s.platform = :ios
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A similar control to the pull down to refresh control created by atebits in Tweetie 2.'
|
||||
s.homepage = 'https://github.com/enormego/EGOTableViewPullRefresh'
|
||||
s.author = { 'Devin Doty' => 'devin.r.doty@gmail.com' }
|
||||
s.source = { :git => 'https://github.com/enormego/EGOTableViewPullRefresh.git',
|
||||
:commit => '743679ffeb6ac02f0afffaac46f318dd2ce6122e' }
|
||||
|
||||
s.source_files = 'EGOTableViewPullRefresh/Classes/View/*.{h,m}'
|
||||
s.resources = 'EGOTableViewPullRefresh/Resources/*.png'
|
||||
s.clean_paths = 'Demo'
|
||||
s.framework = 'QuartzCore'
|
||||
end
|
||||
@@ -0,0 +1,27 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Expecta'
|
||||
s.version = '0.1.0'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A matcher framework for Objective-C & Cocoa'
|
||||
s.homepage = 'http://github.com/petejkim/expecta'
|
||||
s.author = { 'Peter Jihoon Kim' => 'raingrove@gmail.com' }
|
||||
|
||||
s.source = { :git => 'http://github.com/petejkim/expecta.git', :tag => 'v0.1.0' }
|
||||
|
||||
s.description = %{
|
||||
Expecta is a matcher framework for Objective-C and Cocoa. The main
|
||||
advantage of using Expecta over other matcher frameworks is that you do not
|
||||
have to specify the data types. Also, the syntax of Expecta matchers is
|
||||
much more readable and does not suffer from parenthesitis. If you have used
|
||||
Jasmine before, you will feel right at home!
|
||||
}
|
||||
|
||||
s.source_files = 'src/**/*.{h,m}'
|
||||
|
||||
s.clean_paths = "Rakefile", "RDD.md", "products", "test", "*.xcodeproj"
|
||||
|
||||
s.frameworks = 'Foundation'
|
||||
|
||||
s.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' }
|
||||
end
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Expecta'
|
||||
s.version = '0.1.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A matcher framework for Objective-C & Cocoa'
|
||||
s.homepage = 'http://github.com/petejkim/expecta'
|
||||
s.author = { 'Peter Jihoon Kim' => 'raingrove@gmail.com' }
|
||||
|
||||
s.source = { :git => 'http://github.com/petejkim/expecta.git', :tag => 'v0.1.1' }
|
||||
|
||||
s.description = %{
|
||||
Expecta is a matcher framework for Objective-C and Cocoa. The main
|
||||
advantage of using Expecta over other matcher frameworks is that you do not
|
||||
have to specify the data types. Also, the syntax of Expecta matchers is
|
||||
much more readable and does not suffer from parenthesitis. If you have used
|
||||
Jasmine before, you will feel right at home!
|
||||
}
|
||||
|
||||
s.source_files = 'src/**/*.{h,m}'
|
||||
|
||||
s.clean_paths = "Rakefile", "RDD.md", "products", "test", "*.xcodeproj"
|
||||
|
||||
s.frameworks = 'Foundation'
|
||||
|
||||
s.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' }
|
||||
end
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Expecta'
|
||||
s.version = '0.1.2'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A matcher framework for Objective-C & Cocoa'
|
||||
s.homepage = 'http://github.com/petejkim/expecta'
|
||||
s.author = { 'Peter Jihoon Kim' => 'raingrove@gmail.com' }
|
||||
|
||||
s.source = { :git => 'http://github.com/petejkim/expecta.git', :tag => 'v0.1.2' }
|
||||
|
||||
s.description = %{
|
||||
Expecta is a matcher framework for Objective-C and Cocoa. The main
|
||||
advantage of using Expecta over other matcher frameworks is that you do not
|
||||
have to specify the data types. Also, the syntax of Expecta matchers is
|
||||
much more readable and does not suffer from parenthesitis. If you have used
|
||||
Jasmine before, you will feel right at home!
|
||||
}
|
||||
|
||||
s.source_files = 'src/**/*.{h,m}'
|
||||
|
||||
s.clean_paths = "Rakefile", "RDD.md", "products", "test", "*.xcodeproj"
|
||||
|
||||
s.frameworks = 'Foundation'
|
||||
|
||||
s.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' }
|
||||
end
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Expecta'
|
||||
s.version = '0.1.3'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A matcher framework for Objective-C & Cocoa'
|
||||
s.homepage = 'http://github.com/petejkim/expecta'
|
||||
s.author = { 'Peter Jihoon Kim' => 'raingrove@gmail.com' }
|
||||
|
||||
s.source = { :git => 'http://github.com/petejkim/expecta.git', :tag => 'v0.1.3' }
|
||||
|
||||
s.description = %{
|
||||
Expecta is a matcher framework for Objective-C and Cocoa. The main
|
||||
advantage of using Expecta over other matcher frameworks is that you do not
|
||||
have to specify the data types. Also, the syntax of Expecta matchers is
|
||||
much more readable and does not suffer from parenthesitis. If you have used
|
||||
Jasmine before, you will feel right at home!
|
||||
}
|
||||
|
||||
s.source_files = 'src/**/*.{h,m}'
|
||||
|
||||
s.clean_paths = "Rakefile", "RDD.md", "products", "test", "*.xcodeproj"
|
||||
|
||||
s.frameworks = 'Foundation'
|
||||
|
||||
s.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' }
|
||||
end
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FMDB'
|
||||
s.version = '1.5.1'
|
||||
s.summary = 'A Cocoa / Objective-C wrapper around SQLite.'
|
||||
s.homepage = 'https://github.com/ccgus/fmdb'
|
||||
s.author = 'August Mueller'
|
||||
s.source = { :git => 'https://github.com/ccgus/fmdb.git',
|
||||
:tag => 'v1.5.1' }
|
||||
|
||||
s.source_files = 'src/FM*.*'
|
||||
s.library = 'sqlite3'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FMDB'
|
||||
s.version = '1.5'
|
||||
s.summary = 'A Cocoa / Objective-C wrapper around SQLite.'
|
||||
s.homepage = 'https://github.com/ccgus/fmdb'
|
||||
s.author = 'August Mueller'
|
||||
s.source = { :git => 'https://github.com/ccgus/fmdb.git',
|
||||
:tag => 'v1.5' }
|
||||
|
||||
s.source_files = 'src/FM*.*'
|
||||
s.library = 'sqlite3'
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FMDB'
|
||||
s.version = '2.0'
|
||||
s.summary = 'A Cocoa / Objective-C wrapper around SQLite.'
|
||||
s.homepage = 'https://github.com/ccgus/fmdb'
|
||||
s.author = 'August Mueller'
|
||||
s.source = { :git => 'https://github.com/ccgus/fmdb.git',
|
||||
:tag => 'v2.0' }
|
||||
|
||||
s.source_files = 'src/FM*.*'
|
||||
s.library = 'sqlite3'
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FSArgumentParser'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'FDOSL'
|
||||
s.summary = 'Totally awesome tool for parsing command line arguments in a declarative way.'
|
||||
s.homepage = 'https://github.com/NSError/ArgumentParser'
|
||||
s.author = { 'Chris Miller' => 'nserror@me.com' }
|
||||
s.source = { :git => 'https://github.com/NSError/ArgumentParser.git', :tag => '0.0.1' }
|
||||
s.description = 'Parsing command-line arguments is hard, but it doesn\'t have to be! FSArgumentParser makes it much easier to parse command-line arguments by defining a declarative argument signature which some magic box code interprets. It handles the presence of missing arguments, detecting short and long names, and packaging it all up in a simple, easy to use object. So go write command-line tools like a boss, and keep being awesome!'
|
||||
s.source_files = 'ArgumentParser/*.{h,m}'
|
||||
s.clean_paths = 'bin/', 'example', 'example.xcodeproj'
|
||||
s.framework = 'Foundation'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FSURLOperation'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'FDOSL'
|
||||
s.summary = 'Simple NSOperation wrapper for NSURLRequest.'
|
||||
s.homepage = 'https://github.com/NSError/URLOperation'
|
||||
s.author = { 'Chris Miller' => 'nserror@me.com' }
|
||||
s.source = { :git => 'https://github.com/NSError/URLOperation.git', :tag => '0.0.1' }
|
||||
s.description = 'HTTP requests are hard, but scheduling them doesn\'t have to be! FSURLOperation makes it much easier to dispatch NSURLRequests. By leveraging the existing capabilities of NSOperation, you can set dependencies, block until an operation (or set of operations) completes, and also control which thread the request is performed on. So go make concurrent URL operations like a boss, and keep being awesome!'
|
||||
s.source_files = '*.{h,m}'
|
||||
s.framework = 'Foundation'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FTUtils'
|
||||
s.version = '1.1.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'Phone utilities mostly for Core Animation.'
|
||||
s.homepage = 'http://ftutils.com/'
|
||||
s.authors = {'Nathan Eror' => 'contact@freetimestudios.com', 'Corey Floyd' => 'corey.floyd@flyingjalapenosoftware.com', 'Ben Lenarts' => 'ben@boonbits.com' }
|
||||
s.source = { :git => 'https://github.com/neror/ftutils.git', :tag => 'v1.1.1' }
|
||||
s.description = 'The code in FTUtils is common utility code extracted from Free Time Studios iPhone projects. Currently, there is only one primary utility (FTAnimation) and some simple preprocessor macros. Some unit tests exist for the code, but more are needed.'
|
||||
s.platform = :ios
|
||||
s.source_files = 'Classes', 'Headers/*/*.h'
|
||||
s.clean_paths = "Examples", "Support", "Tests", "UnitTests", "apidocs"
|
||||
s.framework = 'QuartzCore'
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FXLabel'
|
||||
s.version = '1.3.1'
|
||||
s.license = 'zlib'
|
||||
s.summary = 'FXLabel improves upon the standard UILabel by providing a subclass that supports soft shadows, inner shadow and gradient fill, and which can easily be used in place of any standard UILabel.'
|
||||
s.homepage = 'http://charcoaldesign.co.uk/source/cocoa#fxlabel'
|
||||
s.author = { 'Nick Lockwood' => 'http://charcoaldesign.co.uk/' }
|
||||
s.source = { :git => 'https://github.com/nicklockwood/FXLabel.git', :tag => '1.3.1' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'FXLabel'
|
||||
s.clean_paths = 'Examples', 'Tests'
|
||||
s.requires_arc = true
|
||||
end
|
||||
@@ -0,0 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Facebook-iOS-SDK'
|
||||
s.version = '0.0.1'
|
||||
s.platform = :ios
|
||||
s.license = 'Apache License, Version 2.0'
|
||||
s.summary = 'The iOS SDK provides Facebook Platform support for iOS apps. ' \
|
||||
'It enables you to access the Facebook Platform APIs including the Graph API, FQL, and Dialogs.'
|
||||
s.homepage = 'http://developers.facebook.com/docs/reference/iossdk'
|
||||
s.author = 'Facebook'
|
||||
|
||||
#s.source = { :git => 'https://github.com/facebook/facebook-ios-sdk.git', :tag => '0.0.1' }
|
||||
s.source = { :git => 'https://github.com/facebook/facebook-ios-sdk.git', :commit => 'e79d07272218d41bfd940fa5b4518d0f274a8085' }
|
||||
|
||||
s.source_files = 'src/*.{h,m}'
|
||||
s.resource = 'FBDialog.bundle'
|
||||
s.clean_paths = 'sample', 'test'
|
||||
|
||||
s.dependency 'SBJson', '2.2.3'
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Facebook-iOS-SDK'
|
||||
s.version = '1.2'
|
||||
s.platform = :ios
|
||||
s.license = 'Apache License, Version 2.0'
|
||||
s.summary = 'The iOS SDK provides Facebook Platform support for iOS apps. ' \
|
||||
'It enables you to access the Facebook Platform APIs including the Graph API, FQL, and Dialogs.'
|
||||
s.homepage = 'http://developers.facebook.com/docs/reference/iossdk'
|
||||
s.author = 'Facebook'
|
||||
|
||||
s.source = { :git => 'https://github.com/facebook/facebook-ios-sdk.git', :tag => 'v1.2' }
|
||||
|
||||
s.source_files = 'src/*.{h,m}'
|
||||
s.resource = 'src/FBDialog.bundle'
|
||||
s.clean_paths = 'sample', 'test'
|
||||
|
||||
s.dependency 'SBJson', '2.2.3'
|
||||
end
|
||||
@@ -0,0 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FileMD5Hash'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'Apache'
|
||||
s.summary = 'Library for computing MD5 hashes of files with small memory usage'
|
||||
s.homepage = 'http://www.joel.lopes-da-silva.com/2010/09/07/compute-md5-or-sha-hash-of-large-file-efficiently-on-ios-and-mac-os-x/'
|
||||
s.author = { 'Joel Lopes Da Silva' => 'joel@lopes-da-silva.com' }
|
||||
s.source = { :git => 'https://github.com/JoeKun/FileMD5Hash.git', :commit => 'd00c0c51c6d0955d9daf94c30cfd95a219d4914e' }
|
||||
|
||||
s.source_files = 'Common/*.{h,c}'
|
||||
s.clean_paths = "Mac", "iOS", 'FileMD5Hash.xcodeproj'
|
||||
|
||||
def s.post_install(target)
|
||||
prefix_header = config.project_pods_root + target.prefix_header_filename
|
||||
prefix_header.open('a') do |file|
|
||||
file.puts(%{#import "FileMD5Hash_Prefix.pch"})
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FormatterKit'
|
||||
s.version = '0.6.0'
|
||||
s.summary = '`stringWithFormat:` for the sophisticated hacker set'
|
||||
s.homepage = 'https://github.com/mattt/FormatterKit'
|
||||
s.author = { 'Mattt Thompson' => 'm@mattt.me' }
|
||||
s.source = { :git => 'https://github.com/mattt/FormatterKit.git', :tag => '0.6.0' }
|
||||
|
||||
s.description = "FormatterKit is a collection of well-crafted NSFormatter subclasses for things like hours of operation, distance, and relative time intervals. Each formatter abstracts away the complex business logic of their respective domain, so that you can focus on the more important aspects of your application."
|
||||
|
||||
s.source_files = 'TTTArrayFormatter/*.{h,m}', 'TTTHoursOfOperation/*.{h,m}',
|
||||
'TTTLocationFormatter/*.{h,m}', 'TTTOrdinalNumberFormatter/*.{h,m}',
|
||||
'TTTTimeIntervalFormatter/*.{h,m}', 'TTTURLRequestFormatter/*.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'FormatterKit'
|
||||
s.version = '0.7.0'
|
||||
s.summary = '`stringWithFormat:` for the sophisticated hacker set'
|
||||
s.homepage = 'https://github.com/mattt/FormatterKit'
|
||||
s.author = { 'Mattt Thompson' => 'm@mattt.me' }
|
||||
s.source = { :git => 'https://github.com/mattt/FormatterKit.git', :tag => '0.7.0' }
|
||||
|
||||
s.description = "FormatterKit is a collection of well-crafted NSFormatter subclasses for things like hours of operation, distance, and relative time intervals. Each formatter abstracts away the complex business logic of their respective domain, so that you can focus on the more important aspects of your application."
|
||||
|
||||
s.source_files = 'TTTArrayFormatter/*.{h,m}', 'TTTHoursOfOperation/*.{h,m}',
|
||||
'TTTLocationFormatter/*.{h,m}', 'TTTOrdinalNumberFormatter/*.{h,m}',
|
||||
'TTTTimeIntervalFormatter/*.{h,m}', 'TTTUnitOfInformationFormatter/*.{h,m}',
|
||||
'TTTURLRequestFormatter/*.{h,m}'
|
||||
end
|
||||
@@ -0,0 +1,11 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'GCCommonCode-iOS'
|
||||
s.version = '0.0.1'
|
||||
s.platform = :ios
|
||||
s.summary = 'GUI Cocoa iOS Common Code Library'
|
||||
s.homepage = 'http://guicocoa.com'
|
||||
s.author = {'GUI Cocoa, LLC.' => 'caleb@guicocoa.com'}
|
||||
s.source = { :git => 'git://github.com/guicocoa/common-code-ios.git', :commit => '772798cf1f4353e0944005b98aef3508908035d5'}
|
||||
s.source_files = '*.{h,m}'
|
||||
s.framework = 'CoreData', 'CoreLocation'
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'GCDiscreetNotificationView'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'A discreet, non-modal, notification view for iOS.'
|
||||
s.homepage = 'https://github.com/gcamp/GCDiscreetNotificationView'
|
||||
s.author = { 'Guillaume Campagna' => 'http://gcamp.ca' }
|
||||
s.source = { :git => 'https://github.com/gcamp/GCDiscreetNotificationView.git', :commit => '3075ef2d27eb471893db4eb235174b26eb67d950' }
|
||||
s.platform = :ios
|
||||
s.source_files = 'GCDiscreetNotificationView/GCDiscreetNotificationView.{h,m}'
|
||||
s.framework = 'UIKit'
|
||||
s.clean_paths = 'Demo'
|
||||
end
|
||||
@@ -0,0 +1,19 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'GDataXML-HTML'
|
||||
s.version = '0.0.1'
|
||||
s.license = 'Apache License 2.0'
|
||||
s.summary = 'HTML/XML parser for the iOS System, based on Google\'s ' \
|
||||
'GDataXML.'
|
||||
s.author = { 'Simon Grätzer' => 'http://graetzer.org/' }
|
||||
s.source = { :git => 'https://github.com/graetzer/GDataXML-HTML.git',
|
||||
:commit => '2eb63b5dae5174061f4458e0489357bd0752903f' }
|
||||
s.homepage = 'https://github.com/graetzer/GDataXML-HTML'
|
||||
s.description = 'It implements parts of NSXML so it\'s easy to parse XML ' \
|
||||
'Files with a DOM API or XPath. This fork of the original ' \
|
||||
'GDataXML adds support for the HTMLparser module of ' \
|
||||
'libxml2 and allows you to deal with non validating XML ' \
|
||||
'or HTML on iOS based devices (iPhone, iPad etc)'
|
||||
s.source_files = 'GDataXML-HTML/lib/*.{h,m}'
|
||||
s.libraries = 'xml2'
|
||||
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'GDataXML-HTML'
|
||||
s.version = '1.0.0'
|
||||
s.license = 'Apache License 2.0'
|
||||
s.summary = 'An XML/HTML Parser for iOS and OSX, based on Google\'s GDataXML.'
|
||||
s.homepage = 'https://github.com/graetzer/GDataXML-HTML'
|
||||
s.author = { 'Simon Grätzer' => 'simon@graetzer.org' }
|
||||
|
||||
s.source = { :git => 'https://github.com/graetzer/GDataXML-HTML.git', :tag => '1.0.0' }
|
||||
|
||||
s.description = 'GDataXML implements parts of NSXML so it\'s easy to parse XML or HTML ' \
|
||||
'with a DOM style API including XPath support. This fork of the original ' \
|
||||
'GDataXML adds support for the HTMLparser module of ' \
|
||||
'libxml2 and allows you to deal with non validating XML ' \
|
||||
'in a simple way'
|
||||
s.source_files = 'GDataXML-HTML/lib/*.{h,m}'
|
||||
s.libraries = 'xml2'
|
||||
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }
|
||||
|
||||
end
|
||||
@@ -0,0 +1,15 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'GHUnitIOS'
|
||||
s.version = '0.4.33'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'Test Framework for Objective-C'
|
||||
s.homepage = 'https://github.com/gabriel/gh-unit'
|
||||
s.author = { 'Gabriel Handford' => 'gabrielh@gmail.com' }
|
||||
s.source = { :git => 'https://github.com/gabriel/gh-unit.git', :commit => 'fea526dee3e6e00548f280b56d4afab049733ef8'}
|
||||
s.description = 'GHUnit is a test framework for Objective-C, Mac OS X 10.5 and above and iPhone 3.x and above. It can be used standalone or with other testing frameworks like SenTestingKit or GTM.'
|
||||
s.source_files = 'Classes/**/*.{h,m}', 'Classes-iOS/**/*.{h,m}', 'Libraries/YelpKit/*.{h,m}', 'Libraries/GTM/**/*.{h,m}', 'Libraries/GHKit/**/*.{h,m}'
|
||||
s.platform = :ios
|
||||
s.framework = 'CoreLocation'
|
||||
s.clean_paths = 'Examples', 'Documentation', 'Project-MacOSX', 'Project-iOS', 'Classes-MacOSX', 'Tests'
|
||||
end
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'GHUnitOSX'
|
||||
s.version = '0.4.33'
|
||||
s.license = 'MIT'
|
||||
s.summary = 'Test Framework for Objective-C'
|
||||
s.homepage = 'https://github.com/gabriel/gh-unit'
|
||||
s.author = { 'Gabriel Handford' => 'gabrielh@gmail.com' }
|
||||
s.source = { :git => 'https://github.com/gabriel/gh-unit.git', :commit => '565564e3ab3b78d0b9cf9c90dd4ad66982f07ef4'}
|
||||
s.description = 'GHUnit is a test framework for Objective-C, Mac OS X 10.5 and above and iPhone 3.x and above. It can be used standalone or with other testing frameworks like SenTestingKit or GTM.'
|
||||
s.source_files = 'Classes/**/*.{h,m}', 'Classes-MacOSX/**/*.{h,m}', 'Libraries/YelpKit/*.{h,m}', 'Libraries/GTM/**/*.{h,m}', 'Libraries/GHKit/**/*.{h,m}'
|
||||
s.platform = :osx
|
||||
s.framework = 'CoreLocation'
|
||||
s.clean_paths = 'Examples', 'Documentation', 'Project-MacOSX', 'Project-iOS', 'Classes-iOS', 'Tests', 'Classes/GHViewTestCase.{h,m}', 'Libraries/YelpKit'
|
||||
end
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'GMGridView'
|
||||
s.version = '0.0.1'
|
||||
s.platform = :ios
|
||||
s.summary = 'A performant Grid-View for iOS (iPhone/iPad) that allows ' \
|
||||
'sorting of views with gestures (the user can move the items ' \
|
||||
'with his finger to sort them) and pinching/rotating/panning ' \
|
||||
'gestures allow the user to play with the view and toggle from ' \
|
||||
'the cellview to a fullsize display.'
|
||||
s.homepage = 'https://github.com/gmoledina/GMGridView'
|
||||
s.author = { 'Gulam Moledina' => 'http://www.gmoledina.ca/' }
|
||||
s.source = { :git => 'https://github.com/gmoledina/GMGridView.git',
|
||||
:commit => '215900fa5468992e0a2e86054f0fa53235dff726' }
|
||||
s.source_files = 'GMGridView/*.{h,m}'
|
||||
s.requires_arc = true
|
||||
s.frameworks = 'QuartzCore'
|
||||
s.clean_paths = 'Example', 'GMGridView/GMGridView.xcodeproj'
|
||||
end
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user