我已经使用按钮实现了以下水平滚动,但似乎它仅在5秒后开始滚动。它卡住了。我想,UI会被阻止。
我在ViewDidLoad()
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,self.view.frame.size.height-100, self.view.frame.size.width, 100)];
int x = 10;
for (int i = 0; i < 10; i++) {
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x,10,80,80)];
[button setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
[button setTag:i];
[button setBackgroundColor:[UIColor greenColor]];
[button addTarget:self action:@selector(onClickofFilter:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:button];
x += button.frame.size.width+10;
}
scrollView.contentSize = CGSizeMake(x, scrollView.frame.size.height);
scrollView.backgroundColor = [UIColor redColor];
[self.view addSubview:scrollView];
有没有办法让它顺利?
答案 0 :(得分:7)
请检查此代码:
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
int x = 0;
CGRect frame;
for (int i = 0; i < 10; i++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
if (i == 0) {
frame = CGRectMake(10, 10, 80, 80);
} else {
frame = CGRectMake((i * 80) + (i*20) + 10, 10, 80, 80);
}
button.frame = frame;
[button setTitle:[NSString stringWithFormat:@"Button %d", i] forState:UIControlStateNormal];
[button setTag:i];
[button setBackgroundColor:[UIColor greenColor]];
[button addTarget:self action:@selector(onClickofFilter:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:button];
if (i == 9) {
x = CGRectGetMaxX(button.frame);
}
}
scrollView.contentSize = CGSizeMake(x, scrollView.frame.size.height);
scrollView.backgroundColor = [UIColor redColor];
[self.view addSubview:scrollView];
答案 1 :(得分:1)
在Swift 4.2中:
func addHorizontalTeamList() {
let scrollView = UIScrollView(frame: CGRect(x: 0,y: 0, width: self.view.frame.width, height: 60))
var frame : CGRect?
for i in 0..<teamsCategory.count {
let button = UIButton(type: .custom)
if i == 0 {
frame = CGRect(x: 10, y: 10, width: 130, height: 40)
}else{
frame = CGRect(x: CGFloat(i * 140), y: 10, width: 130, height: 40)
}
button.frame = frame!
button.tag = i
button.backgroundColor = .lightGray
button.rounded(border: 0, radius: button.frame.height/2)
button.addTarget(self, action: #selector(selectTeam), for: .touchUpInside)
button.setTitle(teamsCategory[i].name, for: .normal)
scrollView.addSubview(button)
}
scrollView.contentSize = CGSize( width: 840, height: scrollView.frame.size.height)
scrollView.backgroundColor = .white
self.view.addSubview(scrollView)
}
@objc func selectTeam() {
}
答案 2 :(得分:0)
这是swift 2.2版本中的类似代码供参考。
let scrollView = UIScrollView(frame: CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y,self.view.frame.width,35))
var x = 0
var frame : CGRect?
for i in 0..<7 {
let button = UIButton(type: .Custom)
if i == 0 {
frame = CGRectMake(10, 5, 80, 20)
}else{
frame = CGRectMake(CGFloat(i * 120), 5, 80, 20)
}
button.frame = frame!
button.tag = i
button.backgroundColor = UIColor.clearColor()
button.addTarget(self, action: #selector(ProgramacioViewController.changeContentOnButtonSelection(_:)), forControlEvents: .TouchUpInside)
scrollView.addSubview(button)
}
scrollView.contentSize = CGSizeMake( 840, scrollView.frame.size.height)
scrollView.backgroundColor = UIColor.clearColor()
self.view.addSubview(scrollView)
答案 3 :(得分:0)
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
int x = 0;
NSUInteger value= [userInfo count];
for (int i = 0; i < value; i++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.titleLabel.textAlignment = UITextAlignmentCenter;
[button setFont:[UIFont fontWithName:@"Lato-Medium" size:12]];
button.layer.borderWidth = 1.0f;
button.layer.cornerRadius = 10;
button.layer.borderColor = [UIColor whiteColor].CGColor;
button.clipsToBounds = YES;
[button setTitle:[NSString stringWithFormat:@"%d",i] forState:UIControlStateNormal];
[button setTag:i];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button setBackgroundColor:[UIColor clearColor]];
button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;
[button addTarget:self action:@selector(onClickSwipeButton:) forControlEvents:UIControlEventTouchUpInside];
button.frame = CGRectMake((i * 100) + (i*10) + 10, 0, 100, 35);
button.tag = i;
x = CGRectGetMaxX(button.frame);
[scrollView addSubview:button];
}
scrollView.contentSize = CGSizeMake(x, scrollView.frame.size.height);
scrollView.backgroundColor = [UIColor clearColor];
[self.randomView addSubview:scrollView];