- 🖼
THTiledImageViewfully supportUIScrollView. You can subclass it and use it. - 🔪 Support Image Cutting Extension Method to generate tiled images.
- 🔍 You can set different tiled images based on user's zoom scale.
To integrate THTiledImageView into your Xcode project using CocoaPods, specify it in your Podfile:
pod "THTiledImageView" THTiledImageView is written in Swift 4, and compatible with iOS 9.0+
-
THTiledImageScrollViewis subclass of UIScrollVIew. CreateTHTiledImageScrollViewfrom Storyboard or programmatically. -
Create dataSource class that is subclass of
THTiledImageViewDataSource.
var dataSource: THTiledImageViewDataSource?- Here is
THTiledImageViewDataSourceoptions that you can use.
func setupExample(imageSize: CGSize, tileSize: [CGSize], imageURL: URL) { if let dataSource = MyTileImageViewDataSource(imageSize: imageSize, tileSize: tileSize, imageURL: imageURL) { dataSource.thumbnailImageName = "bench" // maximun tile level // When you zoom in this level, you can see level 5 tiles. dataSource.maxTileLevel = 5 // minimum tile level dataSource.minTileLevel = 1 // scrollView allowable maximum zoom level dataSource.maxZoomLevel = 8 dataSource.imageExtension = "jpg" tileImageScrollView.set(dataSource: dataSource) dataSource.requestBackgroundImage { _ in // do something after image shows. } } }For more detail, take a look at our example in the project.
THTiledImageView's zoom level and tile level can be set separately.
UIScrollView's Zoom level. Default minimum zoom level is scale aspect fit size of scrollView. maximum zoom level is allowable zoom in level.
Tiled images can be shown at specific zoom level based on tile level. For example, if you set (minTileLevel, maxTileLevel) = (1, 5), You can set 5 different images by tile level.
Tile level 1 can be used wide range of image.
Tile level 5(or more than 1) can be used narrow range of image.
❗️ So far cutting and rendering images cannot be done simultaneously. You should cut an image first(from another viewController), and render the image.
We offer you image cutting function(UIImage.saveTileOf(size:name:withExtension:). Specify the size of tiles by levels.
// size and level will be 512-1, 256-2, 128-3(size-level). let tiles: [CGSize] = [CGSize(width: 512, height: 512), CGSize(width: 256, height: 256), CGSize(width: 128, height: 128)] // static function UIImage.saveTileOf(size: tiles, name: "bench", withExtension: "jpg")Tiled images will be saved on your cache directory. Path of the cache directory:
let cachesPath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0] as StringIf imagefile saved successfully, you can see images from cache directory. Here is the rule of directory path and image file name rules.
Path Rules ./imageName/imageSize/{imageName_imageSize_level_x_y}.jpg Example ./bench/256/bench_256_1_0_0.jpg ❗️ If you create images on your own, you need to obey the path rules.
You can use UIScrollViewDelegate methods from THTiledImageScrollViewDelegate.
public protocol THTiledImageScrollViewDelegate: class { func didScroll(scrollView: THTiledImageScrollView) func didZoom(scrollView: THTiledImageScrollView) }See our example for more details.
THTiledImageView is released under the MIT license. See LICENSE for details.






