美文网首页
将scrollView的子视图调整到中间位置

将scrollView的子视图调整到中间位置

作者: hello_iOS程序媛 | 来源:发表于2018-02-24 17:11 被阅读0次

背景:selItem为scrollView的子视图, scrollView为父视图,将selItem水平置中到父视图scrollView中。

// 让选中的item位于scrollView的水平中间, selItem是scrollView的子视图
- (void)refreshContenOffset {
    CGFloat width = self.scrollView.frame.size.width;
    CGSize contentSize = self.scrollView.contentSize;
    // 如果contentSize的宽度小于frame的宽度,直接返回,不用调整scrollView的contentOffset
    if (contentSize.width <= width) {
        return;
    }
    
    CGRect frame = self.selItem.frame;
    // selItem中点到contentSize左边距离
    CGFloat edgeLeftToSelItemCenterX = CGRectGetMidX(frame);
    // selItem中点到contentSize右边距离
    CGFloat edgeRightToSelItemCenterX = contentSize.width - edgeLeftToSelItemCenterX;
    
    CGFloat targetX = 0.0;
    if (edgeLeftToSelItemCenterX < width / 2.0) {   //如果selItem中点到左边的距离小于bounds宽度的一半,scrollView滑到最左边
        targetX = 0.0;
    } else if (edgeRightToSelItemCenterX < width / 2.0) {   //如果selItem中点到右边的距离小于bounds宽度的一半,scrollView滑到最右边
        targetX = contentSize.width - width;
    } else {     //将selItem置中
        targetX = edgeLeftToSelItemCenterX - width / 2.0;
    }
    [self.scrollView setContentOffset:CGPointMake(targetX, 0) animated:YES];

相关文章

网友评论

      本文标题:将scrollView的子视图调整到中间位置

      本文链接:https://www.haomeiwen.com/subject/afnxxftx.html