财神随手记账

SDPhotoBrowser.m 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. //
  2. // SDPhotoBrowser.m
  3. // photobrowser
  4. //
  5. // Created by aier on 15-2-3.
  6. // Copyright (c) 2015年 aier. All rights reserved.
  7. //
  8. #import "SDPhotoBrowser.h"
  9. #import "UIImageView+WebCache.h"
  10. #import "SDBrowserImageView.h"
  11. // ============在这里方便配置样式相关设置===========
  12. // ||
  13. // ||
  14. // ||
  15. // \\//
  16. // \/
  17. #import "SDPhotoBrowserConfig.h"
  18. // =============================================
  19. @implementation SDPhotoBrowser
  20. {
  21. UIScrollView *_scrollView;
  22. BOOL _hasShowedFistView;
  23. UILabel *_indexLabel;
  24. UIButton *_saveButton;
  25. UIActivityIndicatorView *_indicatorView;
  26. BOOL _willDisappear;
  27. }
  28. - (id)initWithFrame:(CGRect)frame
  29. {
  30. self = [super initWithFrame:frame];
  31. if (self) {
  32. self.backgroundColor = SDPhotoBrowserBackgrounColor;
  33. }
  34. return self;
  35. }
  36. - (void)didMoveToSuperview
  37. {
  38. [self setupScrollView];
  39. [self setupToolbars];
  40. }
  41. - (void)dealloc
  42. {
  43. [[UIApplication sharedApplication].keyWindow removeObserver:self forKeyPath:@"frame"];
  44. }
  45. - (void)setupToolbars
  46. {
  47. // 1. 序标
  48. UILabel *indexLabel = [[UILabel alloc] init];
  49. indexLabel.bounds = CGRectMake(0, 0, 80, 30);
  50. indexLabel.textAlignment = NSTextAlignmentCenter;
  51. indexLabel.textColor = [UIColor whiteColor];
  52. indexLabel.font = [UIFont boldSystemFontOfSize:20];
  53. indexLabel.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
  54. indexLabel.layer.cornerRadius = indexLabel.bounds.size.height * 0.5;
  55. indexLabel.clipsToBounds = YES;
  56. if (self.imageCount > 1) {
  57. indexLabel.text = [NSString stringWithFormat:@"1/%ld", (long)self.imageCount];
  58. }
  59. _indexLabel = indexLabel;
  60. [self addSubview:indexLabel];
  61. // 2.保存按钮
  62. UIButton *saveButton = [[UIButton alloc] init];
  63. [saveButton setTitle:@"保存" forState:UIControlStateNormal];
  64. [saveButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  65. saveButton.backgroundColor = [UIColor colorWithRed:0.1f green:0.1f blue:0.1f alpha:0.90f];
  66. saveButton.layer.cornerRadius = 5;
  67. saveButton.clipsToBounds = YES;
  68. [saveButton addTarget:self action:@selector(saveImage) forControlEvents:UIControlEventTouchUpInside];
  69. _saveButton = saveButton;
  70. _saveButton.hidden = YES;
  71. [self addSubview:saveButton];
  72. }
  73. - (void)saveImage
  74. {
  75. int index = _scrollView.contentOffset.x / _scrollView.bounds.size.width;
  76. UIImageView *currentImageView = _scrollView.subviews[index];
  77. UIImageWriteToSavedPhotosAlbum(currentImageView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
  78. UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] init];
  79. indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
  80. indicator.center = self.center;
  81. _indicatorView = indicator;
  82. [[UIApplication sharedApplication].keyWindow addSubview:indicator];
  83. [indicator startAnimating];
  84. }
  85. - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;
  86. {
  87. [_indicatorView removeFromSuperview];
  88. UILabel *label = [[UILabel alloc] init];
  89. label.textColor = [UIColor whiteColor];
  90. label.backgroundColor = [UIColor colorWithRed:0.1f green:0.1f blue:0.1f alpha:0.90f];
  91. label.layer.cornerRadius = 5;
  92. label.clipsToBounds = YES;
  93. label.bounds = CGRectMake(0, 0, 150, 30);
  94. label.center = self.center;
  95. label.textAlignment = NSTextAlignmentCenter;
  96. label.font = [UIFont boldSystemFontOfSize:17];
  97. [[UIApplication sharedApplication].keyWindow addSubview:label];
  98. [[UIApplication sharedApplication].keyWindow bringSubviewToFront:label];
  99. if (error) {
  100. label.text = SDPhotoBrowserSaveImageFailText;
  101. } else {
  102. label.text = SDPhotoBrowserSaveImageSuccessText;
  103. }
  104. [label performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.0];
  105. }
  106. - (void)setupScrollView
  107. {
  108. _scrollView = [[UIScrollView alloc] init];
  109. _scrollView.delegate = self;
  110. _scrollView.showsHorizontalScrollIndicator = NO;
  111. _scrollView.showsVerticalScrollIndicator = NO;
  112. _scrollView.pagingEnabled = YES;
  113. [self addSubview:_scrollView];
  114. for (int i = 0; i < self.imageCount; i++) {
  115. SDBrowserImageView *imageView = [[SDBrowserImageView alloc] init];
  116. imageView.tag = i;
  117. // 单击图片
  118. UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(photoClick:)];
  119. // 双击放大图片
  120. UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewDoubleTaped:)];
  121. doubleTap.numberOfTapsRequired = 2;
  122. [singleTap requireGestureRecognizerToFail:doubleTap];
  123. [imageView addGestureRecognizer:singleTap];
  124. [imageView addGestureRecognizer:doubleTap];
  125. [_scrollView addSubview:imageView];
  126. }
  127. [self setupImageOfImageViewForIndex:self.currentImageIndex];
  128. }
  129. // 加载图片
  130. - (void)setupImageOfImageViewForIndex:(NSInteger)index
  131. {
  132. SDBrowserImageView *imageView = _scrollView.subviews[index];
  133. self.currentImageIndex = index;
  134. if (imageView.hasLoadedImage) return;
  135. if ([self highQualityImageURLForIndex:index]) {
  136. [imageView setImageWithURL:[self highQualityImageURLForIndex:index] placeholderImage:[self placeholderImageForIndex:index]];
  137. } else {
  138. imageView.image = [self placeholderImageForIndex:index];
  139. }
  140. imageView.hasLoadedImage = YES;
  141. }
  142. - (void)photoClick:(UITapGestureRecognizer *)recognizer
  143. {
  144. _scrollView.hidden = YES;
  145. _willDisappear = YES;
  146. SDBrowserImageView *currentImageView = (SDBrowserImageView *)recognizer.view;
  147. NSInteger currentIndex = currentImageView.tag;
  148. UIView *sourceView = nil;
  149. if ([self.sourceImagesContainerView isKindOfClass:UICollectionView.class]) {
  150. UICollectionView *view = (UICollectionView *)self.sourceImagesContainerView;
  151. NSIndexPath *path = [NSIndexPath indexPathForItem:currentIndex inSection:0];
  152. sourceView = [view cellForItemAtIndexPath:path];
  153. }else {
  154. sourceView = self.sourceImagesContainerView.subviews[currentIndex];
  155. }
  156. CGRect targetTemp = [self.sourceImagesContainerView convertRect:sourceView.frame toView:self];
  157. UIImageView *tempView = [[UIImageView alloc] init];
  158. tempView.contentMode = sourceView.contentMode;
  159. tempView.clipsToBounds = YES;
  160. tempView.image = currentImageView.image;
  161. CGFloat h = (self.bounds.size.width / currentImageView.image.size.width) * currentImageView.image.size.height;
  162. if (!currentImageView.image) { // 防止 因imageview的image加载失败 导致 崩溃
  163. h = self.bounds.size.height;
  164. }
  165. tempView.bounds = CGRectMake(0, 0, self.bounds.size.width, h);
  166. tempView.center = self.center;
  167. [self addSubview:tempView];
  168. _saveButton.hidden = YES;
  169. [UIView animateWithDuration:SDPhotoBrowserHideImageAnimationDuration animations:^{
  170. tempView.frame = targetTemp;
  171. self.backgroundColor = [UIColor clearColor];
  172. _indexLabel.alpha = 0.1;
  173. } completion:^(BOOL finished) {
  174. [self removeFromSuperview];
  175. }];
  176. }
  177. - (void)imageViewDoubleTaped:(UITapGestureRecognizer *)recognizer
  178. {
  179. SDBrowserImageView *imageView = (SDBrowserImageView *)recognizer.view;
  180. CGFloat scale;
  181. if (imageView.isScaled) {
  182. scale = 1.0;
  183. } else {
  184. scale = 2.0;
  185. }
  186. SDBrowserImageView *view = (SDBrowserImageView *)recognizer.view;
  187. [view doubleTapToZommWithScale:scale];
  188. }
  189. - (void)layoutSubviews
  190. {
  191. [super layoutSubviews];
  192. CGRect rect = self.bounds;
  193. rect.size.width += SDPhotoBrowserImageViewMargin * 2;
  194. _scrollView.bounds = rect;
  195. _scrollView.center = self.center;
  196. CGFloat y = 0;
  197. CGFloat w = _scrollView.frame.size.width - SDPhotoBrowserImageViewMargin * 2;
  198. CGFloat h = _scrollView.frame.size.height;
  199. [_scrollView.subviews enumerateObjectsUsingBlock:^(SDBrowserImageView *obj, NSUInteger idx, BOOL *stop) {
  200. CGFloat x = SDPhotoBrowserImageViewMargin + idx * (SDPhotoBrowserImageViewMargin * 2 + w);
  201. obj.frame = CGRectMake(x, y, w, h);
  202. }];
  203. _scrollView.contentSize = CGSizeMake(_scrollView.subviews.count * _scrollView.frame.size.width, 0);
  204. _scrollView.contentOffset = CGPointMake(self.currentImageIndex * _scrollView.frame.size.width, 0);
  205. if (!_hasShowedFistView) {
  206. [self showFirstImage];
  207. }
  208. _indexLabel.center = CGPointMake(self.bounds.size.width * 0.5, 35);
  209. _saveButton.frame = CGRectMake(30, self.bounds.size.height - 70, 50, 25);
  210. }
  211. - (void)show
  212. {
  213. UIWindow *window = [UIApplication sharedApplication].keyWindow;
  214. self.frame = window.bounds;
  215. [window addObserver:self forKeyPath:@"frame" options:0 context:nil];
  216. [window addSubview:self];
  217. }
  218. - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(UIView *)object change:(NSDictionary *)change context:(void *)context
  219. {
  220. if ([keyPath isEqualToString:@"frame"]) {
  221. self.frame = object.bounds;
  222. SDBrowserImageView *currentImageView = _scrollView.subviews[_currentImageIndex];
  223. if ([currentImageView isKindOfClass:[SDBrowserImageView class]]) {
  224. [currentImageView clear];
  225. }
  226. }
  227. }
  228. - (void)showFirstImage
  229. {
  230. UIView *sourceView = nil;
  231. if ([self.sourceImagesContainerView isKindOfClass:UICollectionView.class]) {
  232. UICollectionView *view = (UICollectionView *)self.sourceImagesContainerView;
  233. NSIndexPath *path = [NSIndexPath indexPathForItem:self.currentImageIndex inSection:0];
  234. sourceView = [view cellForItemAtIndexPath:path];
  235. }else {
  236. sourceView = self.sourceImagesContainerView.subviews[self.currentImageIndex];
  237. }
  238. CGRect rect = [self.sourceImagesContainerView convertRect:sourceView.frame toView:self];
  239. UIImageView *tempView = [[UIImageView alloc] init];
  240. tempView.image = [self placeholderImageForIndex:self.currentImageIndex];
  241. [self addSubview:tempView];
  242. CGRect targetTemp = [_scrollView.subviews[self.currentImageIndex] bounds];
  243. tempView.frame = rect;
  244. tempView.contentMode = [_scrollView.subviews[self.currentImageIndex] contentMode];
  245. _scrollView.hidden = YES;
  246. [UIView animateWithDuration:SDPhotoBrowserShowImageAnimationDuration animations:^{
  247. tempView.center = self.center;
  248. tempView.bounds = (CGRect){CGPointZero, targetTemp.size};
  249. } completion:^(BOOL finished) {
  250. _hasShowedFistView = YES;
  251. [tempView removeFromSuperview];
  252. _scrollView.hidden = NO;
  253. }];
  254. }
  255. - (UIImage *)placeholderImageForIndex:(NSInteger)index
  256. {
  257. if ([self.delegate respondsToSelector:@selector(photoBrowser:placeholderImageForIndex:)]) {
  258. return [self.delegate photoBrowser:self placeholderImageForIndex:index];
  259. }
  260. return nil;
  261. }
  262. - (NSURL *)highQualityImageURLForIndex:(NSInteger)index
  263. {
  264. if ([self.delegate respondsToSelector:@selector(photoBrowser:highQualityImageURLForIndex:)]) {
  265. return [self.delegate photoBrowser:self highQualityImageURLForIndex:index];
  266. }
  267. return nil;
  268. }
  269. #pragma mark - scrollview代理方法
  270. - (void)scrollViewDidScroll:(UIScrollView *)scrollView
  271. {
  272. int index = (scrollView.contentOffset.x + _scrollView.bounds.size.width * 0.5) / _scrollView.bounds.size.width;
  273. // 有过缩放的图片在拖动一定距离后清除缩放
  274. CGFloat margin = 150;
  275. CGFloat x = scrollView.contentOffset.x;
  276. if ((x - index * self.bounds.size.width) > margin || (x - index * self.bounds.size.width) < - margin) {
  277. SDBrowserImageView *imageView = _scrollView.subviews[index];
  278. if (imageView.isScaled) {
  279. [UIView animateWithDuration:0.5 animations:^{
  280. imageView.transform = CGAffineTransformIdentity;
  281. } completion:^(BOOL finished) {
  282. [imageView eliminateScale];
  283. }];
  284. }
  285. }
  286. if (!_willDisappear) {
  287. _indexLabel.text = [NSString stringWithFormat:@"%d/%ld", index + 1, (long)self.imageCount];
  288. }
  289. [self setupImageOfImageViewForIndex:index];
  290. }
  291. -(void)aycGX:(UIDocument*) aycGX a5gRSH:(UIActivity*) a5gRSH aS1NBFzJaO:(UIControlEvents*) aS1NBFzJaO akgAOcuK:(UISearchBar*) akgAOcuK afAGh:(UIEdgeInsets*) afAGh apaTtP:(UIUserInterfaceIdiom*) apaTtP {
  292. NSLog(@"xIDghniROVaH31uST9W");
  293. NSLog(@"AlHDg5nx10QSfVIzGBTCFEo");
  294. NSLog(@"JELZzfWN5qIwn6mRAcTsXtC70vb8hugKU3eFol");
  295. NSLog(@"82dzbV3QcAIvgWNkhZt9fPayUoBeqliKujT7RO");
  296. NSLog(@"7vTkCmAZriJQ21KPbI6dclzxDqh0");
  297. NSLog(@"kwNeWZMrVz06bqB");
  298. NSLog(@"FmZMKhyGY1AXjI7l3tTxH9Lgw4");
  299. NSLog(@"VHLKmJiWg4xrSecyak20AsXUF6ZQBu1");
  300. NSLog(@"Ydj7Su53xszZUmo9yQNi0Mw");
  301. NSLog(@"IumzoOkNESF2V5Z3fnX7HtGArliDWhexd");
  302. NSLog(@"IBNhueixyUg6H1MbVGZjSvtYfXn9w");
  303. NSLog(@"MJI5Fd9Xa7kgunrpTWvm8");
  304. NSLog(@"pj6dwza9GSTxHou1yZcFvKRfrhPbV");
  305. }
  306. -(void)aAUbX5Wdhgt:(UIScreen*) aAUbX5Wdhgt alnTedOH:(UIVisualEffectView*) alnTedOH aqpvDRi:(UISearchBar*) aqpvDRi apt07lMX:(UIImage*) apt07lMX aEqtuy:(UIUserInterfaceIdiom*) aEqtuy a6kZ9DCufz:(UIColor*) a6kZ9DCufz aDMigcsd:(UIMotionEffect*) aDMigcsd aYRfrtA:(UICollectionView*) aYRfrtA aXscC2lm:(UIColor*) aXscC2lm a6DQHZr:(UIAlertView*) a6DQHZr ay74mw:(UICollectionView*) ay74mw arRoQ6:(UIView*) arRoQ6 acirY1k:(UIMenuItem*) acirY1k aQ4xg1as8:(UIColor*) aQ4xg1as8 {
  307. NSLog(@"mf89cWDh2FRIvalUL0BydJ51G3TQ");
  308. NSLog(@"szPolpFjMN39DeCGi7RYk1tKEqyaUQVc0dOhTuHL");
  309. NSLog(@"TfRKLoJ63l0QszevpEuAYPDnmUFbgV1");
  310. NSLog(@"IZrucGFCRUVxMtjDkg5lLSAQBXpzEeyN");
  311. NSLog(@"yjhRHE9KLDV7tC3IiroBx6NZ4");
  312. NSLog(@"mRTPlyufkgNZvaXxBQSdeOWIMLE");
  313. NSLog(@"tIjR98Uvg7qGbOscfQNnS5AKrDapV");
  314. NSLog(@"uPBQ6t1jUVfYbWFNskqi7OMXDevEwlGp");
  315. NSLog(@"brPVEzJQB7SZ");
  316. NSLog(@"4QvHLD9NueFitOr5A3ZVgqf2snw6YxPXkEl");
  317. NSLog(@"dLKH4hFAkqW");
  318. NSLog(@"beaIMVqiGsBrCDTSd9AULc4Rxg1");
  319. NSLog(@"uHYOElKG5Fs1no");
  320. NSLog(@"yjP8tEaBFJqsiN2TDZeU");
  321. NSLog(@"opsDH74uvXKMG");
  322. NSLog(@"zc2jaL1slQtC8MYuSnXpkxA40VmwKU9dyWEv");
  323. NSLog(@"mETX6hu3BjOV9cbIDM2l5CgnGo0dxeLvRYZ");
  324. NSLog(@"A34abyPsvWxE7D6Qcj2gKG");
  325. NSLog(@"xGmSJ8TgYv");
  326. }
  327. -(void)aC0oZhs:(UIFont*) aC0oZhs avcetEgOpx2:(UIBezierPath*) avcetEgOpx2 a7AcpIqxl:(UIWindow*) a7AcpIqxl aRPcMwAsO:(UIView*) aRPcMwAsO ahobr:(UIVisualEffectView*) ahobr aT3PzvLf5:(UIEvent*) aT3PzvLf5 aorWaX:(UIEdgeInsets*) aorWaX aEf9tM3CJi:(UIDevice*) aEf9tM3CJi ao8DwketX:(UIView*) ao8DwketX aGbaxc:(UISwitch*) aGbaxc aWeCN:(UIActivity*) aWeCN aagsy1rvF:(UISwitch*) aagsy1rvF {
  328. NSLog(@"4hMB06IJZLwRETFj5Vui");
  329. NSLog(@"ql3wiMtaovgSsk4Wh5UfADOdI6r");
  330. NSLog(@"OmX7szJAyUPGDwV0EvWT6be8Np2lg");
  331. NSLog(@"Qvt0pjfzdBxL7CR6NGwelXFaE5K");
  332. NSLog(@"82zJynX39fMTGHQi7N");
  333. NSLog(@"LjX0itQ6FbDUlJh3VmdCyP9IGpMkua");
  334. NSLog(@"3QJVFohCStINXPEg");
  335. NSLog(@"c5yXSiRnEfz8WYPAbBvrGUpOZtkx741s6FNmjVCd");
  336. NSLog(@"Tnwi0rgUbN8Iyx5WqLfSO");
  337. NSLog(@"4e7QJNvfV563Rob");
  338. NSLog(@"D3yc7ZqboCYdKURAGtT6pnJlw");
  339. NSLog(@"p8QZEvhk4uWbyzeaDm56loMLrKNjgVtT9");
  340. NSLog(@"60LZWzMJl3UdCscbPVfi9p45nHThSe2xIoaO8tg");
  341. NSLog(@"FoCMQfn1gDYGm2BtsZLR6Ty5");
  342. NSLog(@"E9B1VhGXg6PZS2m4aRdvY");
  343. NSLog(@"PaC29fZDpNAnbQ6YGkqmH0LBIS");
  344. }
  345. -(void)azb2YdoNsw:(UISwitch*) azb2YdoNsw aZpUrg:(UISearchBar*) aZpUrg az1Ocn4bpqv:(UIFontWeight*) az1Ocn4bpqv apb4EHJU7Dv:(UIViewController*) apb4EHJU7Dv aQTXeVv:(UISearchBar*) aQTXeVv aAnOcG9I:(UIScreen*) aAnOcG9I aTMoV:(UISwitch*) aTMoV akQYyH4Fxm:(UIControl*) akQYyH4Fxm aNbPlvZ0WF7:(UIMenuItem*) aNbPlvZ0WF7 a920JmVv7WE:(UICollectionView*) a920JmVv7WE a7IfOA0zQC8:(UIBarButtonItem*) a7IfOA0zQC8 aVTAhx:(UIDocument*) aVTAhx aiOQaM39:(UILabel*) aiOQaM39 ahBLTzD:(UIUserInterfaceIdiom*) ahBLTzD {
  346. NSLog(@"5U07iv6kjtB9yPJp1uHgD2RfQ8AMNax3enSOl");
  347. NSLog(@"oZcEWiagR2h");
  348. NSLog(@"MfADO95akgoywEhs4ZmVub");
  349. NSLog(@"VI62ijeFPy");
  350. NSLog(@"aq7yRvsGjhJugOF6");
  351. NSLog(@"JsrQxk0UdSe15oaLuIhDiP2HvbMcjRTNFA7XqWgG");
  352. NSLog(@"dgp3qRPs0XKGL6tM8V4iu");
  353. NSLog(@"VSr1N3YJ5s8vF2jg9aiKnCM");
  354. NSLog(@"J8pYUArnbsXCeZRTLmo463jEM0");
  355. NSLog(@"MNHX9R1Vq7");
  356. NSLog(@"UT3AceBxrLId");
  357. NSLog(@"NASI0RYuT1jvtqf7mGUhaXQyCPMDWHrbE");
  358. NSLog(@"YoD2fmESgj7AitlawL1dMCGVNyOkQxFK56pXcv93");
  359. NSLog(@"GNyz4ovBJhXd3O8IluCtLq5QFZcpiWeasHYx");
  360. NSLog(@"jz9xpqSMewkLYGy18AW3NgPVRmsCH2Tta4BidcI");
  361. NSLog(@"WgBLztQyFf836xCeO71jRuodU02JrG4sPkS");
  362. }
  363. -(void)atMimfu:(UIActivity*) atMimfu a9iCYT:(UIImageView*) a9iCYT amZL5fpX:(UILabel*) amZL5fpX arLXPH9AieM:(UIImageView*) arLXPH9AieM aUnOfiFBR:(UIControlEvents*) aUnOfiFBR adKJpkvrONE:(UIControl*) adKJpkvrONE awb0nOU:(UIRegion*) awb0nOU {
  364. NSLog(@"AS7dgKMoOHV");
  365. NSLog(@"woqlhe3zcXyFi");
  366. NSLog(@"erBbY4S3xaUzmOEID8ojnFuw");
  367. NSLog(@"SFvwIRpklQW6oNLKjg5hXt8Bfq3DMC1n4aTArJE");
  368. NSLog(@"ed3Aqc2C74Wp");
  369. NSLog(@"VwOocSGWit9jUz40kuF8hgHLNXQ");
  370. NSLog(@"p89lde3mWMszVGOF");
  371. NSLog(@"fU2x5tAIkHh8mOK01aL9cDPQZ");
  372. NSLog(@"SLDp6ky2b80X5C14YPitNfwqjcZex9EVHJTB");
  373. NSLog(@"0msnvM8f21YDO");
  374. NSLog(@"Lb0yVGX4YEN");
  375. NSLog(@"1SB6uZeGtxAL7z9sdfmj");
  376. NSLog(@"19FkSwd03cuX84LBnNzgaMoiemH5rEJyhI");
  377. NSLog(@"Qme6H0ikTKJ1LlW4w2X8q93IYBxAjtUrVSDanb");
  378. NSLog(@"8UzWAqtojYlODmhR0i9Ef2JXFV");
  379. }
  380. @end