xcode - ios图片轮播器 frame异常
黄舟
黄舟 2017-04-17 17:34:46
0
2
710

写的图片轮播器,带式图片的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]; }

感觉代码逻辑并没有问题,然后找不到原因,求大神告知

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

reply all (2)
Peter_Zhu
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 改为 h

    黄舟

    需添加的imageView的frame未设置。

      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!