我在Objective C中制作了一个简单的应用程序,每次单击按钮时,该按钮都会更改屏幕上的位置。第一次单击该按钮时,计时器开始计时。
问题是计时器每秒钟关闭一次,按钮返回到其原始位置。如何使计时器不影响按钮移动?
这是我的ViewController.m文件中的代码:
注意:我根本无法弄清楚。我可能需要有人真正为我讲清楚,告诉我该怎么做。谢谢!
注意:我的UIButton是“ blackDot”
-(IBAction) mainClickButton{
int xmin = ([blackDot frame].size.width)/2;
int ymin = ([blackDot frame].size.height)/2;
int x = xmin + arc4random_uniform(self.view.frame.size.width - blackDot.frame.size.width);
int y = ymin + arc4random_uniform(self.view.frame.size.height - blackDot.frame.size.height);
[blackDot setCenter:CGPointMake(x, y)];
if (timerBeginInt < 1) {
[timerLabel setText:@"Time : 0:10"];
[self.view addSubview:timerLabel];
currMinute=0;
currSeconds=10;
[self start];
}
timerBeginInt = timerBeginInt + 1;
}
-(void)start
{
timer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFired) userInfo:nil repeats:YES];
}
-(void)timerFired
{
if((currMinute>0 || currSeconds>=0) && currMinute>=0)
{
if(currSeconds==0)
{
currMinute-=1;
currSeconds=59;
}
else if(currSeconds>0)
{
currSeconds-=1;
}
if(currMinute>-1)
[timerLabel setText:[NSString stringWithFormat:@"%@%d%@%02d",@"Time : ",currMinute,@":",currSeconds]];
}
else
{
[timer invalidate];
timerBeginInt = 0;
}
}
任何帮助表示赞赏!谢谢!
LodgeApps。
我复制了您的代码,使用自己的Xcode运行它,然后发现了使您感到困惑的问题。
简短的解决方案在这里:
如果您想继续使用自动版式,
[self.view removeConstraints:blackDot.constraints];
NSLayoutConstraint* leftConstraint = [NSLayoutConstraint constraintWithItem:blackDot attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0f constant:x];
NSLayoutConstraint* topConstraint = [NSLayoutConstraint constraintWithItem:blackDot attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0f constant:y];
leftConstraint.active = YES;
topConstraint.active = YES;
更换 setCenter
出于更深层次的原因:
启用autolayout属性后,您将无法更改IBOutlet的框架,每次尝试修改框架或中心都是非法的。您只能更改约束以移动IBOutlet。
令我困惑的是:
根据代码,单击按钮,按钮将立即移动。但是不会。因为方法在自动版式中类似setCenter
或setFrame
不起作用。自动布局需要约束才能将UI(IBOutlets)放在正确的位置。如果保持自动布局打开,然后不对IB进行约束,则可能发生任何我无法解释的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句