У меня есть UIScrollView
, который прокручивается только по горизонтали. У меня есть ситуация, когда у меня есть представления, заполненные массивом в UIScrollView
. В UIScrollView
есть три вида, которые вместе составляют один компонент (таких компонентов много). Компонент содержит:
- UILabel
- UIButton
- UIView (для основного текста)
Я поместил две клавиши со стрелками (влево и вправо) на концах UIScrollView
. При касании стрелки влево я сдвигаю на одну позицию влево (с полной строкой для отображения) в UIScrollView
и на одну позицию вправо (с полной строкой для отображения) в случае кнопки со стрелкой вправо.
До сих пор я могу выполнять действие со стрелкой влево. Но я понятия не имею, как выполнить касание стрелки вправо и как отобразить полную строку для касания клавиш со стрелками, если отображается только часть этой строки.
Я знаю, что это странно, что у меня есть UIScrollView
, и я все еще хочу добавить клавиши со стрелками для его перемещения. Но ничего не могу поделать. Это требование клиента. Вот как я реализовал действие со стрелкой влево:
-(IBAction) onClickLeftArrow
{
NSLog(@"BUTTON VALUE : %i",iButtonValue);
if(iButtonValue <= [m_BCListArray count]) {
NSArray *arr = [scrollDemo subviews];
for(int j = 0; j < [arr count]; j++) {
UIView *view1 = [arr objectAtIndex:j];
[view1 removeFromSuperview];
}
XX = 5.0;
int tagcount = [m_BCListArray count]-iButtonValue;
NSLog(@"%@",m_BCListArray);
for(int i = iButtonValue; i >= 1; i--)
{
UILabel *blabel = [[UILabel alloc] initWithFrame:CGRectMake(XX, 6, 120, 26)];
blabel.text = [m_BCListArray objectAtIndex:[m_BCListArray count]-i];
blabel.backgroundColor = [UIColor clearColor];
blabel.textColor = [UIColor whiteColor];
blabel.font = [UIFont systemFontOfSize:14];
[scrollDemo addSubview:blabel];
//underline code
CGSize expectedLabelSize = [[m_BCListArray objectAtIndex:[m_BCListArray count]-1] sizeWithFont:blabel.font constrainedToSize:blabel.frame.size lineBreakMode:UILineBreakModeWordWrap];
CGRect newFrame = blabel.frame;
newFrame.size.height = expectedLabelSize.height;
blabel.frame = CGRectMake(blabel.frame.origin.x, blabel.frame.origin.y, expectedLabelSize.width+10, expectedLabelSize.height);
blabel.numberOfLines = 1;
[blabel sizeToFit];
int width=blabel.bounds.size.width;
int height=blabel.bounds.size.height;
UIButton *btnContent = [UIButton buttonWithType:UIButtonTypeCustom];
[btnContent addTarget:self action:@selector(SelectButton:)forControlEvents:UIControlEventTouchDown];
btnContent.tag = tagcount+1;
btnContent.frame=CGRectMake(XX, 2.0, width+10, height);
[scrollDemo addSubview:btnContent];
scrollDemo.contentSize = CGSizeMake(XX+50, 32);
//scrollDemo.contentSize = CGSizeMake(expectedLabelSize.width,expectedLabelSize.height);
UIView *viewUnderline=[[UIView alloc] init];
viewUnderline.frame=CGRectMake(XX, 26, width, 1);
viewUnderline.backgroundColor=[UIColor whiteColor];
[scrollDemo addSubview:viewUnderline];
[viewUnderline release];
scrollDemo.contentSize = CGSizeMake(XX+width+10, 32);
XX = XX + width+10;
iRight = iRight + 1;
tagcount ++;
// iRight --;
}
}
iButtonValue = iButtonValue+1;
}