Initial commit
This commit is contained in:
Executable
+267
@@ -0,0 +1,267 @@
|
||||
//
|
||||
// LYPhotoShowView.m
|
||||
// Droplets
|
||||
//
|
||||
// Created by 米明 on 15/12/29.
|
||||
// Copyright © 2015年 米明. All rights reserved.
|
||||
//
|
||||
|
||||
#import "LYPhotoShowView.h"
|
||||
#import "LYPhoto.h"
|
||||
#import "LYHelper.h"
|
||||
#import "UIImageView+WebCache.h"
|
||||
#define kPlace ([UIScreen mainScreen].bounds.size.width - 4 * kSizePhoto)/5
|
||||
#define SCREENSIZE [UIScreen mainScreen].bounds.size
|
||||
#define kSizePhoto self.frame.size.height
|
||||
|
||||
#define kFirstSpace SCREENSIZE.width
|
||||
#define LABEL_TITLE_FONT [UIFont systemFontOfSize:12.f]
|
||||
|
||||
@interface LYPhotoShowView ()
|
||||
{
|
||||
CGRect _frame;
|
||||
}
|
||||
|
||||
|
||||
@property(nonatomic,strong)NSMutableArray * imgViews;
|
||||
|
||||
@property(nonatomic,strong)NSMutableArray * imageNames;
|
||||
|
||||
@property(nonatomic,strong)NSArray *linewitdhArr;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@implementation LYPhotoShowView
|
||||
|
||||
- (instancetype)init{
|
||||
self = [super init];
|
||||
if(self){
|
||||
[self setUp];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame{
|
||||
self = [super initWithFrame:frame];
|
||||
if(self){
|
||||
[self setUp];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (UIScrollView *)scrollView{
|
||||
if (!_scrollView) {
|
||||
_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(kFirstSpace, 0, self.frame.size.width, self.frame.size.height*3/2 + 3)];
|
||||
_scrollView.alpha = 0;
|
||||
_scrollView.contentOffset = CGPointMake(0, 0);
|
||||
_scrollView.contentSize = CGSizeMake(self.frame.size.height*_images.count + kPlace +
|
||||
kSizePhoto +(_images.count-1)*kPlace, self.frame.size.height);
|
||||
|
||||
//隐藏滚动视图的水平指示条
|
||||
_scrollView.showsHorizontalScrollIndicator=NO;
|
||||
_scrollView.backgroundColor = SECTHEADER_VIEWCOLOUR;
|
||||
|
||||
//隐藏滚动视图的垂直指示条
|
||||
_scrollView.showsVerticalScrollIndicator=NO;
|
||||
|
||||
|
||||
|
||||
[self addSubview:_scrollView];
|
||||
|
||||
}
|
||||
return _scrollView;
|
||||
}
|
||||
- (void)setUp{
|
||||
|
||||
_imgViews = [NSMutableArray array];
|
||||
_imageNames = [NSMutableArray array];
|
||||
|
||||
}
|
||||
- (void)clear{
|
||||
|
||||
// for (UIView * v in _imgViews) {
|
||||
// [v removeFromSuperview];
|
||||
// }
|
||||
//
|
||||
// for (UILabel *l in _imageNames) {
|
||||
//
|
||||
// [l removeFromSuperview];
|
||||
//
|
||||
// }
|
||||
|
||||
[_scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
|
||||
|
||||
[_scrollView removeFromSuperview];
|
||||
_scrollView = nil;
|
||||
[_imgViews removeAllObjects];
|
||||
[_imageNames removeAllObjects];
|
||||
if (!_images||_images.count<=0) {
|
||||
self.frame=CGRectZero;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (void)setImages:(NSArray *)images nameLabels:(NSArray *)nameLabels {
|
||||
_images = images;
|
||||
_nameLabels = nameLabels;
|
||||
|
||||
_linewitdhArr=[self getlabelWidthsWith:nameLabels];;
|
||||
|
||||
[self creatImageViews];
|
||||
|
||||
[self setLineView];
|
||||
}
|
||||
|
||||
- (void)creatImageViews{
|
||||
|
||||
[self clear];
|
||||
|
||||
__weak typeof(self) wself = self;
|
||||
|
||||
[_images enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
//imgView
|
||||
|
||||
|
||||
CGRect frame = CGRectMake( kPlace + idx*(kPlace + kSizePhoto) , 0, kSizePhoto, kSizePhoto );
|
||||
LYPhoto * photo = [[LYPhoto alloc]initWithFrame:frame];
|
||||
|
||||
[wself.scrollView addSubview:photo];
|
||||
|
||||
//nameLabel
|
||||
|
||||
CGRect nameFrame=CGRectMake( idx * (kPlace + kSizePhoto) + (kPlace +kSizePhoto) - kSizePhoto , kSizePhoto, kSizePhoto, kSizePhoto/2 );
|
||||
UILabel * nameLabel =[[UILabel alloc] initWithFrame:nameFrame];
|
||||
nameLabel.textColor=SECTIONVIEW_LABELCOLER;
|
||||
nameLabel.text=_nameLabels[idx];
|
||||
|
||||
nameLabel.textAlignment=NSTextAlignmentCenter;
|
||||
nameLabel.font=[UIFont systemFontOfSize:12];
|
||||
|
||||
[wself.scrollView addSubview:nameLabel];
|
||||
|
||||
[wself.imageNames addObject:nameLabel];
|
||||
|
||||
photo.tag = idx;
|
||||
photo.backgroundColor = SECTHEADER_VIEWCOLOUR;
|
||||
|
||||
[wself.imgViews addObject:photo];
|
||||
|
||||
|
||||
[photo addTarget:self action:@selector(photoAction:)];
|
||||
|
||||
if ([obj isKindOfClass:[NSString class]]) {//地址
|
||||
NSString * imgUrl = (NSString *)obj;
|
||||
if ([LYHelper isUrl:imgUrl]) {//是图片链接
|
||||
|
||||
|
||||
[photo sd_setImageWithURL:[NSURL URLWithString:imgUrl] placeholderImage:[UIImage imageNamed:@"icon1"]];
|
||||
|
||||
|
||||
|
||||
//自行下载图片
|
||||
}else {//名字
|
||||
photo.image = [UIImage imageNamed:imgUrl];
|
||||
}
|
||||
}else if ([obj isKindOfClass:[UIImage class]]){//image对象
|
||||
UIImage * image = (UIImage *)obj;
|
||||
photo.image = image;
|
||||
}
|
||||
}];
|
||||
|
||||
}
|
||||
-(void)setPhotoActionCallback:(LYPhotoActionBlock)photoActionCallback{
|
||||
_photoActionCallback = nil;
|
||||
_photoActionCallback = [photoActionCallback copy];
|
||||
}
|
||||
- (void)photoAction:(id)sender{
|
||||
|
||||
|
||||
|
||||
if (self.photoActionCallback) {
|
||||
self.photoActionCallback(((LYPhoto*)sender).tag);
|
||||
}
|
||||
NSInteger index= ((LYPhoto*)sender).tag ;
|
||||
|
||||
|
||||
[self showLineWidthLabelWith:[_linewitdhArr[index] floatValue] andIndex:index];
|
||||
|
||||
|
||||
|
||||
}
|
||||
- (void)show{
|
||||
//距离
|
||||
CGRect frame = self.scrollView.frame;
|
||||
frame.origin.x = 0;
|
||||
__weak typeof(self) wself = self;
|
||||
|
||||
[UIView animateWithDuration:0.75 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||
wself.scrollView.frame = frame;
|
||||
wself.scrollView.alpha = 1;
|
||||
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
|
||||
}];
|
||||
|
||||
|
||||
}
|
||||
- (void)dismiss{
|
||||
CGRect frame = self.scrollView.frame;
|
||||
frame.origin.x = kFirstSpace;
|
||||
__weak typeof(self) wself = self;
|
||||
[UIView animateWithDuration:0 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||
wself.scrollView.frame = frame;
|
||||
wself.scrollView.alpha = 0;
|
||||
|
||||
} completion:^(BOOL finished) {
|
||||
[wself removeFromSuperview];
|
||||
}];
|
||||
}
|
||||
|
||||
-(NSArray*)getlabelWidthsWith:(NSArray*)nameLabels{
|
||||
|
||||
NSMutableArray *labelWidthsArr=[@[] mutableCopy];
|
||||
for (NSString *name in nameLabels) {
|
||||
CGSize size = [name boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : LABEL_TITLE_FONT} context:nil].size;
|
||||
NSNumber *width = [NSNumber numberWithFloat:size.width + 20.f];
|
||||
[labelWidthsArr addObject:width];
|
||||
}
|
||||
|
||||
return labelWidthsArr;
|
||||
|
||||
}
|
||||
|
||||
-(void)showLineWidthLabelWith:(CGFloat) width andIndex:(NSInteger) Index{
|
||||
|
||||
|
||||
CGRect frame = CGRectMake( Index * (kPlace + kSizePhoto) + (kPlace +kSizePhoto) - kSizePhoto ,kSizePhoto*3/2,kSizePhoto,3.0f);
|
||||
|
||||
[UIView animateWithDuration:.2f animations:^{
|
||||
|
||||
_line.frame=frame;
|
||||
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
//初始line
|
||||
|
||||
-(void)setLineView{
|
||||
|
||||
CGRect frame = CGRectMake( kPlace ,kSizePhoto*3/2,kSizePhoto,3.0f);
|
||||
|
||||
_line = [[UIView alloc] initWithFrame:frame];
|
||||
|
||||
_line.backgroundColor = [UIColor orangeColor];
|
||||
|
||||
[_scrollView addSubview:_line];
|
||||
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user