写的图片轮播器,带式图片的ImageView刚好和整个view有个整个view距离其父view的距离。
具体代码如下:
-(instancetype)initWithFrame:(CGRect)frame imageNames:(NSArray *)imageNames{
self = [super initWithFrame:frame];
if (self) {
self.imageArr = imageNames;
self.isPortrait = NO;
self.scrollView = [[UIScrollView alloc] initWithFrame:frame];
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.delegate = self;
self.scrollView.pagingEnabled = YES;
[self addSubview:self.scrollView];
for (int i = 0; i < 3; i++) {
UIImageView *imageView = [[UIImageView alloc] init];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.layer.borderWidth = 2;
imageView.layer.borderColor = [UIColor yellowColor].CGColor;
[self.scrollView addSubview:imageView];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClickImageViewWithBlock:)];
[self.scrollView addGestureRecognizer:tap];
}
//pageControl
self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, frame.size.height - 37, frame.size.width, 37)];
[self addSubview:self.pageControl];
}
return self;
}
-(void)layoutSubviews{
[super layoutSubviews];
CGFloat w = self.frame.size.width;
CGFloat h = self.frame.size.height;
if (self.isPortrait) {
[self.scrollView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIImageView *img = (UIImageView *)obj;
img.frame = CGRectMake(0, idx * w, w, h);
}];
self.scrollView.contentSize = CGSizeMake(0, imageViewCount * h);
}else{
[self.scrollView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIImageView *img = (UIImageView *)obj;
img.frame = CGRectMake(idx * w, 0, w, h);
}];
self.scrollView.contentSize = CGSizeMake(imageViewCount * w, 0);
}
self.pageControl.numberOfPages = self.imageArr.count;
self.pageControl.currentPage = 0;
[self updateImage];
}
感觉代码逻辑并没有问题,然后找不到原因,求大神告知
天蓬老师2017-04-17 17:36:46
if (self.isPortrait) {
[self.scrollView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIImageView *img = (UIImageView *)obj;
img.frame = CGRectMake(0, idx * w, w, h);
}];
self.scrollView.contentSize = CGSizeMake(0, imageViewCount * h);
}else{
[self.scrollView.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
UIImageView *img = (UIImageView *)obj;
img.frame = CGRectMake(idx * w, 0, w, h);
}];
self.scrollView.contentSize = CGSizeMake(imageViewCount * w, 0);
}
img.frame = CGRectMake(0, idx * w, w, h);
w changed to h