我正在尝试创建UIbuttons
的垂直列表。我已设法使用以下代码在屏幕的左上角创建一个UIButton
:
-(void)didMoveToView:(SKView *)view {
UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 100, 50);
[btn setTitle:@"Hello, world!" forState:UIControlStateNormal];
[self.view addSubview:btn];
}
然而,当我尝试增加按钮数量并将它们放在屏幕中间时,它们不会出现。我试图使用的代码如下:
-(void)didMoveToView:(SKView *)view {
/* Setup your scene here */
map = [SKNode node];
midScreenX = CGRectGetMidX(self.frame);
midScreenY = CGRectGetMidY(self.frame);
UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 100, 50);
[btn setTitle:@"Hello, world!" forState:UIControlStateNormal];
[self.view addSubview:btn];
for (int i = 0; i<numberOfLevels; i += 1) {
UIButton * btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn2.frame = CGRectMake(midScreenX, midScreenY + separation*i, 100, 50);
[btn2 setTitle:@"Hello, world!" forState:UIControlStateNormal];
[self.view addSubview:btn2];
}
}
我在方法之外定义了变量separation和numberOfLevels,全局范围分别为160和20。
当我使用第二个代码时,与使用第一个代码时相比没有任何变化。
我对目标c很新,可能会犯一个非常简单的错误。这些buttons
显然会偏离屏幕的顶部,感谢任何能告诉我如何创建scroll
效果以便我可以移动按钮的人。目前,我正在使用非常基本的代码,只需移动屏幕就可以触摸屏幕。我认为,鉴于它在应用程序中的普及,有更优雅的方式。
提前感谢您的帮助。
答案 0 :(得分:1)
使用Autolayout,您可以签出此代码。
UIButton *previousButton = nil;
for (NSInteger i = 0; i<numberOfLevels; i++)
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.view addSubview:btn];
if (i == 0)
{
[btn addConstraint:[NSLayoutConstraint constraintWithItem:btn attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTopMargin multiplier:1 constant:seperation]];
}
else
{
[btn addConstraint:[NSLayoutConstraint constraintWithItem:btn attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:previousButton attribute:NSLayoutAttributeTop multiplier:1 constant:seperation]];
}
[btn addConstraint:[NSLayoutConstraint constraintWithItem:btn attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:seperation]];
[btn addConstraint:[NSLayoutConstraint constraintWithItem:btn attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1 constant:seperation]];
[btn addConstraint:[NSLayoutConstraint constraintWithItem:btn attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1 constant:50]];
previousButton = btn;
}
答案 1 :(得分:0)
如果有效,你可以检查一下:
{{1}}
答案 2 :(得分:0)
您的代码相对正确,除了separation
和numberOfLevels
的相当大的价值
对于iPhone 5 / 5s(屏幕高度为568pt
,您应该只看到左上角的一个按钮和中间的两个按钮。
这就是你的屏幕应该是这样的,所以问题出在
之外的某个地方在运行时调试你的视图你可以在Xcode中使用小但非常有用的按钮