Iphone 添加新按钮后,UIScrollView变得非常粗糙

Iphone 添加新按钮后,UIScrollView变得非常粗糙,iphone,uiscrollview,Iphone,Uiscrollview,在这里,我尝试使用scrollView构建扩展视图,因此我的类是: ButtonsScroller.h 这是我的组件类,该类扩展了UIView并具有uiscrollview 这是这个类中的主要方法 -(void)buildUi { buttonsCount=[buttonsArray count]; NSLog(@"Building Scroll With %d Buttons",buttonsCount); NSLog(@", every row has %d Buttons",coun

在这里,我尝试使用scrollView构建扩展视图,因此我的类是:

ButtonsScroller.h
这是我的组件类,该类扩展了UIView并具有uiscrollview

这是这个类中的主要方法

-(void)buildUi {

buttonsCount=[buttonsArray count];

NSLog(@"Building Scroll With %d Buttons",buttonsCount);
NSLog(@", every row has %d Buttons",countOfButtonsInOneRow);
NSLog(@", every button Width is :  %d px",buttonWidth);
NSLog(@", every button height is :  %d px",buttonHeight);
NSLog(@", space Between Buttons In One Row   is :  %d px",marginsBetweenButtons);
NSLog(@", space Between 2 rows  is :  %d px",marginsBetweenRows);
NSLog(@"and number Of Rows To Be Shown :  %d row",rowsToShow);
int horizontalStart=horizontalStartFrom-buttonWidth;


int HORIZONTAL_CORDENATES=horizontalStart;

for(int bc=0;bc<buttonsCount;bc++){
    NSLog(@"buttons Counter : %d",bc);

    for(int g=0;g<countOfButtonsInOneRow;g++){
        if(bc==buttonsCount || bc>buttonsCount){
            break;
        }else {


            Expos *expo=[buttonsArray objectAtIndex:bc];

           //ExpoUIButton : My Custom UIView with buttons in it
            ExpoUIButton *btn=[[ExpoUIButton alloc]init];

            [btn.name setText:expo.userName];

            if(![expo.user_type isEqualToString:@"2"]){
                NSLog(@"[expo.user_type isEqualToString:1");
                [btn setType:0];
            }


            btn.frame=CGRectMake(HORIZONTAL_CORDENATES, VERTICAL_CORDENATES, buttonWidth, buttonHeight);                
            [scrollView addSubview:btn];
            bc=bc+1;
            HORIZONTAL_CORDENATES=HORIZONTAL_CORDENATES-(marginsBetweenButtons+buttonWidth);


        }
        NSLog(@"g : %d",g);
    }

    bc=bc-1;
    HORIZONTAL_CORDENATES=horizontalStart;
    VERTICAL_CORDENATES=VERTICAL_CORDENATES+(marginsBetweenRows+buttonHeight);
}

// ComputeRow Count 

int rowCount=buttonsCount;

// NSLog(@"rowCount%4  : %d",(rowCount%4 ));
while((rowCount%countOfButtonsInOneRow) !=0){
    NSLog(@"rowCount : %d",rowCount);
    rowCount=rowCount+1;
}

float rowCounts=(rowCount/countOfButtonsInOneRow);
NSLog(@"rowCounts : %f",rowCounts);


float viewHeight=rowsToShow*(buttonHeight)+(rowsToShow*marginsBetweenRows)+(buttonHeight/2);
NSLog(@"viewHeight : %f",viewHeight);

if(self.showLoadMore){
    if(loadMore==nil){
        loadMore=[UIButton buttonWithType:UIButtonTypeCustom];
        [loadMore setImage:[UIImage imageNamed:@"more"] forState:UIControlStateNormal];
        [loadMore setImage:[UIImage imageNamed:@"more-f"] forState:UIControlStateHighlighted];
        [loadMore setFrame:CGRectMake(130, VERTICAL_CORDENATES+3, 68, 15)];

        [scrollView addSubview:loadMore];

    }else {
        [loadMore setFrame:CGRectMake(130, VERTICAL_CORDENATES+3, 68, 15)];
    }
      [scrollView  setContentSize:CGSizeMake(SC_WIDTH, VERTICAL_CORDENATES+25)];
}else {
    [scrollView  setContentSize:CGSizeMake(SC_WIDTH, VERTICAL_CORDENATES)];
} 
} 
当我打开视图并加载第一组按钮时,视图仍然正常,但是 当添加第二组按钮时,问题就会出现,uiscrollview变得粗糙,所有的按钮都是旧的和新的,无法单击

此外,如果在加载第一组按钮后返回到我的第一个VC视图,然后转到scrollviewVC屏幕,则所有按钮仍然不可单击 那么问题出在哪里

编辑:


因为我认为这是一个刷新问题

创建新按钮集时是否删除旧按钮?你也在使用-arc吗?不,我没有删除旧的case,我需要它们,我使用arc,我会说你已经覆盖了drawRect,并且没有有效地完成它。尝试用标准按钮替换自定义按钮我尝试使用standers按钮,但仍然有相同的问题,关于drawRect何时何地必须覆盖它,以及我必须写入什么?!我发现了问题,我以错误的方式发送了load more事件,我在Buttons Scroller.h中创建了一个方法,用于在mainVC中设置loadMore按钮的操作,我将选择器从mainVc传递到ButtonsScroller,这是一个错误的方法-因为:我认为这是一个缓冲区溢出问题-但我更改了它并使用了代理,所以它现在工作得很好,非常感谢
#pragma mark -
#pragma mark - YttpConnectionDelegate
-(void) YConnectionDoneWithArray:(NSMutableArray *)items {
    NSLog(@"items : %d",[items count]);
    if([items count]>0  ){
        exposArray =items;
        [productsList hideLoadingView];
        [productsList setButtonsArray:exposArray];
        [productsList buildUi  ];
        SEL selector = @selector(loadDataFromInternet);
        [productsList loadMoreBtnSelector:selector target:self];
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    } else {
        [productsList hideLoadingMoreButton];
    }
}