如何在滚动视图上添加多个按钮
问题描述:
我想与滚动视图一起动态地添加按钮,假设有100个按钮要添加到滚动视图上,将它添加到nib文件上会是一件容易的事,所以我想知道如何编写代码,在滚动视图的图像视图顶部动态添加按钮如何在滚动视图上添加多个按钮
答
你需要做的是创建一个循环,创建UIButtons
。设置按钮&将它们作为子视图添加到UIScrollView
。代码如下。
NSUInteger i;
int xCoord=0;
int yCoord=0;
int buttonWidth=100;
int buttonHeight=50;
int buffer = 10;
for (i = 1; i <= 100; i++)
{
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
aButton.frame = CGRectMake(xCoord, yCoord,buttonWidth,buttonHeight);
[aButton addTarget:self action:@selector(whatever:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:aButton];
yCoord += buttonHeight + buffer;
}
[scrollView setContentSize:CGSizeMake(700, yCoord)];
我基本上这里做的是具有X & Y坐标的变量是什么。当我循环创建UIButtons
上午创建适当的CGRect
结构来决定将按钮放在UIScrollView
的哪里。将该按钮添加到scrollView后,将Y值更改为您想要放置下一个按钮的位置。
最后不要忘记为scrollview设置ContentSize
,以便它能够滚动。 PS:所有这些代码都是自由输入的,可能有小的语法错误,但是逻辑是可靠的。
答
可以使用以下代码来对滚动视图添加多个按钮:
步骤1:
Delegate "UIScrollViewDelegate" to your Viewcontroller.h
for example:
@interface Viewcontroller : UIViewController<UIScrollViewDelegate>
步骤2:
//create you UIScrollView
UIScrollView *Scroll_View= [[UIScrollView alloc]initWithFrame:CGRectMake(0 ,0 ,self.view.frame.size.width ,self.view.frame.size.height-0)];
Scroll_View.delegate= self;
self.automaticallyAdjustsScrollViewInsets= NO;
Scroll_View.backgroundColor= [UIColor clearColor];
Scroll_View.scrollEnabled= YES;
Scroll_View.userInteractionEnabled= YES;
[Scroll_View setShowsHorizontalScrollIndicator:NO];
[Scroll_View setShowsVerticalScrollIndicator:YES];
[self.view addSubview:Scroll_View];
步骤3:
NSArray *optionsAry= [NSArray arrayWithObjects:@"My Profile & My Orders" ,@"Track Order" ,@"Settings" ,@"Contact Us" ,@"About Us" ,@"Terms & Conditions" ,@"Currency Converter" ,@"System Info" ,@"e-Commerce News App (News Billa)" ,@"Social Media" ,nil];
int y= 20;
for(int i=0; i<optionsAry.count; i++){
UIButton *BTN_For_More= [[UIButton alloc] initWithFrame:CGRectMake(20 ,y , Scroll_View.frame.size.width-40 ,35)];
BTN_For_More.tag= i;
BTN_For_More.backgroundColor= [UIColor whiteColor];
[BTN_For_More addTarget:self action:@selector(BTN_For_More_Action:) forControlEvents:UIControlEventTouchUpInside];
BTN_For_More.titleLabel.text= [NSString stringWithFormat:@"%@",[optionsAry objectAtIndex:i]];
BTN_For_More.titleLabel.textColor= [UIColor colorWithRed:12/255.0 green:104/255.0 blue:172/255.0 alpha:1.0f];
BTN_For_More.titleLabel.textAlignment= NSTextAlignmentCenter;
BTN_For_More.titleLabel.font= [UIFont fontWithName:@"SourceSansPro-Regular" size:15];
//3D effects Start
BTN_For_More.layer.shadowColor= [UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:0.5f].CGColor;
BTN_For_More.layer.shadowOffset= CGSizeMake(0 ,0);//2,2
BTN_For_More.layer.shadowRadius= 2.0;
BTN_For_More.layer.shadowOpacity= 1.0;
BTN_For_More.layer.masksToBounds= NO;
//3D effects End
[Scroll_View addSubview:BTN_For_More];
y= BTN_For_More.frame.size.height + y + 20;
}//for loop END //10
Scroll_View.contentSize= CGSizeMake(Scroll_View.frame.size.width ,y);
第4步:
-(void) BTN_For_More_Action:(NSString *)myString{
NSLog(@"you clicked on button %@", myString);
}
嗨它工作完美btw按钮宽度n buttonheight像素是正确的? – raptor85
其实你不需要担心这一点。 iOS会将像素标准化为X,Y坐标。所以基本上你可以在iPad或iPhone上运行相同的代码而不会遇到麻烦。 –
ty只是一个更多的问题,因为我创建了一些按钮,我需要添加图像,这是在xml网址的顶部,在代码 – raptor85