iOS版:setContentSize引起我的整个框架的UIScrollView跳 [英] iOS: setContentSize is causing my entire UIScrollView frame to jump

查看:512
本文介绍了iOS版:setContentSize引起我的整个框架的UIScrollView跳的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有可能是一个简单的解决这个问题,我失踪,但我似乎无法找到病因。

问题:我每次打电话setContentSize我的滚动视图,它使整个滚动视图帧转移。

问:为什么它的位置每次都重设setContentSize叫?以及如何得到它停止?

注:


  • 滚动视图中的contentOffSet是罚款。这是整个
    滚动视图帧跳跃到其原来的位置。

  • 滚动视图是为了向上和向下按钮preSS,露出了里面的UIView的。
    - 这工作得很好,但在打开一个单元格时,和CollapseClick本身(滚动视图)调用setContentSize,整个滚动视图跳回了prematurely

  • 任何意见将是AP preciated。谢谢你。

布局:


  • 简单的布局:1滚动视图(全屏),为的UIView 1容器(身高:120点)的出现和消失的滚动型上下移动。

MasterView.m(部分)

   - (无效){showPostShout
    的CGRect newCCFrame = myCollapseClick.frame; //< ---- myCollapseClick是的UIScrollView    如果(!postShoutOpen){
        newCCFrame.origin.y + = 120;
        [UIView的animateWithDuration:0.4延迟:0选项:UIViewAnimationOptionCurveEaseInOut动画:^ {
            self.postShoutContainer.alpha = 1;
            myCollapseClick.frame = newCCFrame;        }完成:^(BOOL完){
            的NSLog(@完了!);
        }];
    }其他{
        newCCFrame.origin.y - = 120;
        [UIView的animateWithDuration:0.3延迟:0选项:UIViewAnimationOptionCurveEaseInOut动画:^ {
            self.postShoutContainer.alpha = 0;
            myCollapseClick.frame = newCCFrame;
        }完成:^(BOOL完){
            的NSLog(@finished2!);
        }];
    }    postShoutOpen = postShoutOpen!;
}

Col​​lapseableClick.m(违规部分?)

   - (无效)repositionCollapseClickCellsBelowIndex:(INT)指数withOffset:(浮点){偏移
    对于(INT YY =指数+ 1; YY< self.dataArray.count; YY ++){
        CollapseClickCell *电池= [self.dataArray objectAtIndex:YY];
        cell.frame = CGRectMake(cell.frame.origin.x,cell.frame.origin.y +偏移,cell.frame.size.width,cell.frame.size.height);
    }    //调整大小self.ContentSize
    CollapseClickCell * lastCell = [self.dataArray objectAtIndex:self.dataArray.count - 1];
    [个体经营setContentSize:CGSizeMake(self.frame.size.width,lastCell.frame.origin.y + lastCell.frame.size.height + kCCPad)];}

collapseableclick.m(整体)

  //
// CollapseClick.m
// CollapseClick
//
//创建者本·戈登在13年2月28日。
//版权所有(C)2013本·戈登。版权所有。
//#进口CollapseClick.h
//#进口的UIScrollView + SVPullToRefresh.h@implementation CollapseClick
@synthesize CollapseClickDelegate;
- (ID)initWithFrame:方法(的CGRect)帧
{
    自= [超级initWithFrame:方法框架]
    如果(个体经营){
        //初始化code
        self.isClickedArray = [[NSMutableArray里的alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
        self.dataArray = [[NSMutableArray里的alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
        [个体经营reloadCollapseClick]
    }
    返回自我;
}
的#pragma马克 - 加载数据
- (无效){reloadCollapseClick
    //设置:身高
    浮totalHeight = 0;    //如果数组没有Init'd,他们INIT
    如果(!(self.isClickedArray)){
        self.isClickedArray = [[NSMutableArray里的alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
    }    如果(!(self.dataArray)){
        self.dataArray = [[NSMutableArray里的alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
    }    //确保他们都清楚
    [self.isClickedArray removeAllObjects]
    [self.dataArray removeAllObjects]    //删除所有子视图
    对于(的UIView *在self.subviews子视图){
        [子视图removeFromSuperview]
    }    //添加单元格
    为(中间体XX = 0; XX&下; [CollapseClickDelegate numberOfCellsForCollapseClick]; XX ++){
        //创建细胞
        ///添加委托方法同意/不同意在这里辩手
        CollapseClickCell *电池= [CollapseClickCell newCollapseClickCellWithTitle:[CollapseClickDelegate titleForCollapseClickAtIndex:XX]统计:[CollapseClickDelegate statsForCollapseClick:XX]指数:XX内容:[CollapseClickDelegate viewForCollapseClickContentViewAtIndex:XX]];
        //设置cell.TitleView的的backgroundColor
        如果([(ID)CollapseClickDelegate respondsToSelector:@selector(colorForCollapseClickTitleViewAtIndex :)]){
            cell.TitleView.backgroundColor = [CollapseClickDelegate colorForCollapseClickTitleViewAtIndex:XX];
        }
        其他{
            cell.TitleView.backgroundColor = [的UIColor colorWithWhite:0.4阿尔法:1.0];
        }
        //设置cell.TitleLabel的颜色
        如果([(ID)CollapseClickDelegate respondsToSelector:@selector(colorForTitleLabelAtIndex :)]){
            cell.TitleLabel.textColor = [CollapseClickDelegate colorForTitleLabelAtIndex:XX];
        }
        其他{
            cell.TitleLabel.textColor =的UIColor whiteColor]
        }
        //设置cell.TitleArrow的颜色
        如果([(ID)CollapseClickDelegate respondsToSelector:@selector(colorForTitleArrowAtIndex :)]){
            [cell.TitleArrow drawWithColor:[CollapseClickDelegate colorForTitleArrowAtIndex:XX]];
        }
        其他{
            [cell.TitleArrow drawWithColor:[的UIColor colorWithWhite:0.0阿尔法:0.35];
        }        //设置cell.ContentView大小
        cell.ContentView.frame = CGRectMake(0,kCCHeaderHeight + kCCPad,self.frame.size.width,cell.ContentView.frame.size.height);        //设置单元格的大小
        cell.frame = CGRectMake(0,totalHeight,self.frame.size.width,kCCHeaderHeight);
        //添加目标按钮
        [cell.TitleButton addTarget:自我行动:@选择(didSelectCollapseClickButton :) forControlEvents:UIControlEventTouchUpInside];        //添加细胞
        [个体经营addSubview:电池]        //添加到DataArray中&安培; isClickedArray
        [self.isClickedArray ADDOBJECT:[NSNumber的numberWithBool:否]];
        [self.dataArray ADDOBJECT:电池]        //计算totalHeight
        totalHeight + = kCCHeaderHeight + kCCPad;
    }
    //设置自我的ContentSize和ContentOffset
    [个体经营setContentSize:CGSizeMake(self.frame.size.width,totalHeight)];
    [个体经营setContentOffset:CGPointZero];
    [NSNotificationCenter defaultCenter] postNotificationName:@CollapseClickUpdated对象:个体经营];
}的#pragma马克 - 细胞重新定位
- (无效)repositionCollapseClickCellsBelowIndex:(INT)指数withOffset:(浮点){偏移
    对于(INT YY =指数+ 1; YY< self.dataArray.count; YY ++){
        CollapseClickCell *电池= [self.dataArray objectAtIndex:YY];
        cell.frame = CGRectMake(cell.frame.origin.x,cell.frame.origin.y +偏移,cell.frame.size.width,cell.frame.size.height);
    }    //调整大小self.ContentSize
    CollapseClickCell * lastCell = [self.dataArray objectAtIndex:self.dataArray.count - 1];
    [个体经营setContentSize:CGSizeMake(self.frame.size.width,lastCell.frame.origin.y + lastCell.frame.size.height + kCCPad)];}
的#pragma马克 - 难道点击
- (无效)didSelectCollapseClickButton:(UIButton的*)titleButton {
    BOOL isOpen会= NO;    //小区是开放的 - >关闭
    如果([self.isClickedArray objectAtIndex:titleButton.tag] boolValue] == YES){
        [个体经营closeCollapseClickCellAtIndex:titleButton.tag动画:YES];
    }
    //细胞是CLOSED - >打开
    其他{
        [个体经营openCollapseClickCellAtIndex:titleButton.tag动画:YES];
        isOpen会= YES;
    }    //调用委托方法
    如果([(ID)CollapseClickDelegate respondsToSelector:@selector(didClickCollapseClickCellAtIndex:isNowOpen :)]){
        [CollapseClickDelegate didClickCollapseClickCellAtIndex:titleButton.tag isNowOpen:isOpen会];
    }
}的#pragma马克 - 打开CollapseClickCell
- (无效)openCollapseClickCellAtIndex:(INT)指数动画:(BOOL)动画{
    //检查如果它不先打开
    如果([self.isClickedArray objectAtIndex:指数] boolValue] = YES!){
        漂浮时间= 0;
        如果(动画){
            持续时间= 0.25;
        }
        [UIView的animateWithDuration:持续时间的动画:^ {
            //调整细胞
            CollapseClickCell *电池= [self.dataArray objectAtIndex:指数]
            cell.frame = CGRectMake(cell.frame.origin.x,cell.frame.origin.y,cell.frame.size.width,cell.ContentView.frame.origin.y + cell.ContentView.frame.size.height + kCCPad);            //改变方向箭头
            CGAffineTransform变换= CGAffineTransformMakeRotation(M_PI / 2);
            cell.TitleArrow.transform =变换;            //改变isClickedArray
            [self.isClickedArray replaceObjectAtIndex:指数withObject:[NSNumber的numberWithBool:YES];            //下面的重新定位单元中所有CollapseClickCells
            [个体经营repositionCollapseClickCellsBelowIndex:指数withOffset:cell.ContentView.frame.size.height + kCCPad];
        }];
    }
} - (无效)openCollapseClickCellsWithIndexes:(NSArray的*)indexArray动画:(BOOL)动画{
    //这工作了NSNumbers每个索引
    为(中间体二= 0; II蛋白酶indexArray.count;ⅱ++){
        编号IndexID为= indexArray [Ⅱ];
        如果([IndexID为isKindOfClass:[NSNumber的类]){
            [个体经营openCollapseClickCellAtIndex:[IndexID为的intValue]动画:动画]
        }
    }}的#pragma马克 - 关闭CollapseClickCell
- (无效)closeCollapseClickCellAtIndex:(INT)指数动画:(BOOL)动画{
    //检查它的开放第一
    如果([self.isClickedArray objectAtIndex:指数] boolValue] == YES){
        漂浮时间= 0;
        如果(动画){
            持续时间= 0.25;
        }
        [UIView的animateWithDuration:持续时间的动画:^ {
            //调整细胞
            CollapseClickCell *电池= [self.dataArray objectAtIndex:指数]
            cell.frame = CGRectMake(cell.frame.origin.x,cell.frame.origin.y,cell.frame.size.width,kCCHeaderHeight);            //改变方向箭头
            CGAffineTransform变换= CGAffineTransformMakeRotation(0);
            cell.TitleArrow.transform =变换;            //改变isClickedArray
            [self.isClickedArray replaceObjectAtIndex:指数withObject:[NSNumber的numberWithBool:NO]];            //下面的重新定位单元中所有CollapseClickCells
            [个体经营repositionCollapseClickCellsBelowIndex:指数withOffset:-1 *(cell.ContentView.frame.size.height + kCCPad)];
        }];
    }
} - (无效)closeCollapseClickCellsWithIndexes:(NSArray的*)indexArray动画:(BOOL)动画{
    //这工作了NSNumbers每个索引
    为(中间体二= 0; II蛋白酶indexArray.count;ⅱ++){
        编号IndexID为= indexArray [Ⅱ];
        如果([IndexID为isKindOfClass:[NSNumber的类]){
            [个体经营closeCollapseClickCellAtIndex:[IndexID为的intValue]动画:动画]
        }
    }
}
的#pragma马克 - CollapseClickCell索引
- (CollapseClickCell *)collapseClickCellForIndex:(INT){指数
    如果([self.dataArray objectAtIndex:指数] isKindOfClass:[CollapseClickCell类]){
        返回[self.dataArray objectAtIndex:指数]
    }    回零;
}
的#pragma马克 - 滚动细胞
- (无效)scrollToCollapseClickCellAtIndex:(INT)指数动画:(BOOL)动画{
    CollapseClickCell *电池= [self.dataArray objectAtIndex:指数]
    [个体经营setContentOffset:CGPointMake(cell.frame.origin.x,cell.frame.origin.y)动画:动画]
}
的#pragma马克 - Cell的内容查看
- (UIView的*)contentViewForCellAtIndex:(INT){指数
    CollapseClickCell *电池= [self.subviews objectAtIndex:指数]
    返回cell.ContentView;
}@结束


解决方案

有一个简单的解决方案:关闭自动布局

对于我来说,我没有把它关掉了我的整个故事板,只是我在加载的笔尖。(打算用来作为整个网站的小部件。)问题解决了。

在WWDC 2012的视频会话228 - 为掌握自动布局的最佳实践。解释和解决这个问题,开始在30m45s

There is probably a simple solution to this problem that I'm missing, but I can't seem to find the cause.

Problem: Every time I call setContentSize on my scroll view, it causes the entire scrollview frame to shift.

Question: Why does its position reset every time setContentSize is called? and how do I get it to stop?

Notes:

  • The contentOffSet within the Scrollview is fine. It's the entire scrollview frame that jumps to its original position.
  • The scroll view is meant to move up and down with a button press, revealing the UIView underneath. -- This works fine, but when a cell is opened, and CollapseClick calls setContentSize on itself (the scrollview), the entire scrollview jumps back up prematurely
  • Any advice would be appreciated. Thanks.

Layout:

  • Simple Layout: 1 scrollview(full screen), 1 container for UIView(height: 120 point) that appears and disappears as the Scrollview moves up and down.

MasterView.m (portion)

-(void)showPostShout{
    CGRect newCCFrame = myCollapseClick.frame;//<----myCollapseClick is the UIScrollView

    if (!postShoutOpen) {
        newCCFrame.origin.y += 120;
        [UIView animateWithDuration:.4 delay:0  options:UIViewAnimationOptionCurveEaseInOut animations:^{
            self.postShoutContainer.alpha = 1;
            myCollapseClick.frame= newCCFrame;

        } completion: ^(BOOL finished){
            NSLog(@"finished!");
        }];
    } else{
        newCCFrame.origin.y -= 120;
        [UIView animateWithDuration:.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
            self.postShoutContainer.alpha = 0;
            myCollapseClick.frame= newCCFrame;
        } completion: ^(BOOL finished){
            NSLog(@"finished2!");
        }];
    }

    postShoutOpen = !postShoutOpen;
}

CollapseableClick.m (offending portion?)

-(void)repositionCollapseClickCellsBelowIndex:(int)index withOffset:(float)offset {
    for (int yy = index+1; yy < self.dataArray.count; yy++) {
        CollapseClickCell *cell = [self.dataArray objectAtIndex:yy];
        cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y + offset, cell.frame.size.width, cell.frame.size.height);
    }

    // Resize self.ContentSize
    CollapseClickCell *lastCell = [self.dataArray objectAtIndex:self.dataArray.count - 1];
    [self setContentSize:CGSizeMake(self.frame.size.width, lastCell.frame.origin.y + lastCell.frame.size.height + kCCPad)];

}

collapseableclick.m (whole)

//
//  CollapseClick.m
//  CollapseClick
//
//  Created by Ben Gordon on 2/28/13.
//  Copyright (c) 2013 Ben Gordon. All rights reserved.
//

#import "CollapseClick.h"
//#import "UIScrollView+SVPullToRefresh.h"

@implementation CollapseClick
@synthesize CollapseClickDelegate;


- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.isClickedArray = [[NSMutableArray alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
        self.dataArray = [[NSMutableArray alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
        [self reloadCollapseClick];
    }
    return self;
}


#pragma mark - Load Data
-(void)reloadCollapseClick {
    // Set Up: Height
    float totalHeight = 0;

    // If Arrays aren't Init'd, Init them
    if (!(self.isClickedArray)) {
        self.isClickedArray = [[NSMutableArray alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
    }

    if (!(self.dataArray)) {
        self.dataArray = [[NSMutableArray alloc] initWithCapacity:[CollapseClickDelegate numberOfCellsForCollapseClick]];
    }

    // Make sure they are clear
    [self.isClickedArray removeAllObjects];
    [self.dataArray removeAllObjects];

    // Remove all subviews
    for (UIView *subview in self.subviews) {
        [subview removeFromSuperview];
    }

    // Add cells
    for (int xx = 0; xx < [CollapseClickDelegate numberOfCellsForCollapseClick]; xx++) {
        // Create Cell
        ///add delegate methods for agree/disagree debaters here 
        CollapseClickCell *cell = [CollapseClickCell newCollapseClickCellWithTitle:[CollapseClickDelegate titleForCollapseClickAtIndex:xx] stats:[CollapseClickDelegate statsForCollapseClick:xx] index:xx content:[CollapseClickDelegate viewForCollapseClickContentViewAtIndex:xx]];


        // Set cell.TitleView's backgroundColor
        if ([(id)CollapseClickDelegate respondsToSelector:@selector(colorForCollapseClickTitleViewAtIndex:)]) {
            cell.TitleView.backgroundColor = [CollapseClickDelegate colorForCollapseClickTitleViewAtIndex:xx];
        }
        else {
            cell.TitleView.backgroundColor = [UIColor colorWithWhite:0.4 alpha:1.0];
        }


        // Set cell.TitleLabel's Color
        if ([(id)CollapseClickDelegate respondsToSelector:@selector(colorForTitleLabelAtIndex:)]) {
            cell.TitleLabel.textColor = [CollapseClickDelegate colorForTitleLabelAtIndex:xx];
        }
        else {
            cell.TitleLabel.textColor = [UIColor whiteColor];
        }


        // Set cell.TitleArrow's Color
        if ([(id)CollapseClickDelegate respondsToSelector:@selector(colorForTitleArrowAtIndex:)]) {
            [cell.TitleArrow drawWithColor:[CollapseClickDelegate colorForTitleArrowAtIndex:xx]];
        }
        else {
            [cell.TitleArrow drawWithColor:[UIColor colorWithWhite:0.0 alpha:0.35]];
        }

        // Set cell.ContentView's size
        cell.ContentView.frame = CGRectMake(0, kCCHeaderHeight + kCCPad, self.frame.size.width, cell.ContentView.frame.size.height);

        // Set cell's size
        cell.frame = CGRectMake(0, totalHeight, self.frame.size.width, kCCHeaderHeight);


        // Add target to Button
        [cell.TitleButton addTarget:self action:@selector(didSelectCollapseClickButton:) forControlEvents:UIControlEventTouchUpInside];

        // Add cell
        [self addSubview:cell];

        // Add to DataArray & isClickedArray
        [self.isClickedArray addObject:[NSNumber numberWithBool:NO]];
        [self.dataArray addObject:cell];

        // Calculate totalHeight
        totalHeight += kCCHeaderHeight + kCCPad;
    }


    // Set self's ContentSize and ContentOffset
    [self setContentSize:CGSizeMake(self.frame.size.width, totalHeight)];
    [self setContentOffset:CGPointZero];
    [[NSNotificationCenter defaultCenter]  postNotificationName:@"CollapseClickUpdated" object: self ];
}



#pragma mark - Reposition Cells
-(void)repositionCollapseClickCellsBelowIndex:(int)index withOffset:(float)offset {
    for (int yy = index+1; yy < self.dataArray.count; yy++) {
        CollapseClickCell *cell = [self.dataArray objectAtIndex:yy];
        cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y + offset, cell.frame.size.width, cell.frame.size.height);
    }

    // Resize self.ContentSize
    CollapseClickCell *lastCell = [self.dataArray objectAtIndex:self.dataArray.count - 1];
    [self setContentSize:CGSizeMake(self.frame.size.width, lastCell.frame.origin.y + lastCell.frame.size.height + kCCPad)];

}


#pragma mark - Did Click
-(void)didSelectCollapseClickButton:(UIButton *)titleButton {
    BOOL isOpen = NO;

    // Cell is OPEN -> CLOSED
    if ([[self.isClickedArray objectAtIndex:titleButton.tag] boolValue] == YES) {
        [self closeCollapseClickCellAtIndex:titleButton.tag animated:YES];
    }
    // Cell is CLOSED -> OPEN
    else {
        [self openCollapseClickCellAtIndex:titleButton.tag animated:YES];
        isOpen = YES;
    }

    // Call delegate method
    if ([(id)CollapseClickDelegate respondsToSelector:@selector(didClickCollapseClickCellAtIndex:isNowOpen:)]) {
        [CollapseClickDelegate didClickCollapseClickCellAtIndex:titleButton.tag isNowOpen:isOpen];
    }
}

#pragma mark - Open CollapseClickCell
-(void)openCollapseClickCellAtIndex:(int)index animated:(BOOL)animated {
    // Check if it's not open first
    if ([[self.isClickedArray objectAtIndex:index] boolValue] != YES) {
        float duration = 0;
        if (animated) {
            duration = 0.25;
        }
        [UIView animateWithDuration:duration animations:^{
            // Resize Cell
            CollapseClickCell *cell = [self.dataArray objectAtIndex:index];
            cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, cell.ContentView.frame.origin.y + cell.ContentView.frame.size.height + kCCPad);

            // Change Arrow orientation
            CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
            cell.TitleArrow.transform = transform;

            // Change isClickedArray
            [self.isClickedArray replaceObjectAtIndex:index withObject:[NSNumber numberWithBool:YES]];

            // Reposition all CollapseClickCells below Cell
            [self repositionCollapseClickCellsBelowIndex:index withOffset:cell.ContentView.frame.size.height + kCCPad];
        }];
    }
}

-(void)openCollapseClickCellsWithIndexes:(NSArray *)indexArray animated:(BOOL)animated {
    // This works off of NSNumbers for each Index
    for (int ii = 0; ii < indexArray.count; ii++) {
        id indexID = indexArray[ii];
        if ([indexID isKindOfClass:[NSNumber class]]) {
            [self openCollapseClickCellAtIndex:[indexID intValue] animated:animated];
        }
    }

}



#pragma mark - Close CollapseClickCell
-(void)closeCollapseClickCellAtIndex:(int)index animated:(BOOL)animated {
    // Check if it's open first
    if ([[self.isClickedArray objectAtIndex:index] boolValue] == YES) {
        float duration = 0;
        if (animated) {
            duration = 0.25;
        }
        [UIView animateWithDuration:duration animations:^{
            // Resize Cell
            CollapseClickCell *cell = [self.dataArray objectAtIndex:index];
            cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, kCCHeaderHeight);

            // Change Arrow orientation
            CGAffineTransform transform = CGAffineTransformMakeRotation(0);
            cell.TitleArrow.transform = transform;

            // Change isClickedArray
            [self.isClickedArray replaceObjectAtIndex:index withObject:[NSNumber numberWithBool:NO]];

            // Reposition all CollapseClickCells below Cell
            [self repositionCollapseClickCellsBelowIndex:index withOffset:-1*(cell.ContentView.frame.size.height + kCCPad)];
        }];
    }
}

-(void)closeCollapseClickCellsWithIndexes:(NSArray *)indexArray animated:(BOOL)animated {
    // This works off of NSNumbers for each Index
    for (int ii = 0; ii < indexArray.count; ii++) {
        id indexID = indexArray[ii];
        if ([indexID isKindOfClass:[NSNumber class]]) {
            [self closeCollapseClickCellAtIndex:[indexID intValue] animated:animated];
        }
    }
}


#pragma mark - CollapseClickCell for Index
-(CollapseClickCell *)collapseClickCellForIndex:(int)index {
    if ([[self.dataArray objectAtIndex:index] isKindOfClass:[CollapseClickCell class]]) {
        return [self.dataArray objectAtIndex:index];
    }

    return nil;
}


#pragma mark - Scroll To Cell
-(void)scrollToCollapseClickCellAtIndex:(int)index animated:(BOOL)animated {
    CollapseClickCell *cell = [self.dataArray objectAtIndex:index];
    [self setContentOffset:CGPointMake(cell.frame.origin.x, cell.frame.origin.y) animated:animated];
}


#pragma mark - Content View for Cell
-(UIView *)contentViewForCellAtIndex:(int)index {
    CollapseClickCell *cell = [self.subviews objectAtIndex:index];
    return cell.ContentView;
}

@end

解决方案

There was a simple solution: Turn off Auto-layout.

For me, I didn't turn it off for my whole storyboard, just a nib I had loaded in. (intended to be used as a widget throughout the site.) Problem solved.

The WWDC 2012 video "Session 228 - Best Practices for Mastering Auto Layout" explains and addresses the problem, starting at 30m45s.

这篇关于iOS版:setContentSize引起我的整个框架的UIScrollView跳的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆