Iphone 添加新按钮后,UIScrollView变得非常粗糙
在这里,我尝试使用scrollView构建扩展视图,因此我的类是: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
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];
}
}