我的swift文件中有一个infoButton
UIButton插座。此按钮最初放置在故事板中,具有以下约束:
我希望将此按钮向下移动50个像素,具体取决于NoAds
布尔值是真还是假。
我试过这样做,但我似乎无法移动它。
if NoAds{
print("No Ads")
infoButton.center.y = infoButton.center.y - 50
}else{
print("Ads")
loadBanner()
}
我认为这应该是一个简单的解决方法吗?
编辑:该广告是一个标准的Google广告横幅,宽320宽,高50。
答案 0 :(得分:4)
答案 1 :(得分:2)
使用IBOutlet
连接约束,如@ wilson-xj所述。
然后使用以下代码为约束的更改设置动画。这将增加一些润色,并允许广告很好地滑入/滑出而不是通过立即转移他们可能与之交互的内容来刺激用户。
view.layoutIfNeeded()
UIView.animateWithDuration(0.30) { () -> Void in
self.topConstraint.constant = constraintConstant // 50 or 100 etc
self.view.layoutIfNeeded()
}
答案 2 :(得分:1)
最好的方法可能是添加约束并动态更改按钮,但如果您不想添加其他插座并想要动态执行此操作,则可以更改按钮框的位置,如下所示:
var X_Position:CGFloat? = startButton.frame.origin.x + 50 //add 50 to move button down page
var Y_Position:CGFloat? = startButton.frame.origin.y
startButton.frame = CGRectMake(X_Position, Y_Position, startButton.frame.width, startButton.frame.height)
这将重新绘制新位置的按钮。
答案 3 :(得分:1)
尝试这个我希望它会有所帮助这是我正在使用的我的代码!! 我假设你们都设置了Top,Bottom,leading,Trailing space等约束
if NoAds
{
print("No Ads")
for item in self.view.constraints
{
if item.firstItem .isKindOfClass(UIButton)
{
let newField = item.firstItem as! UIButton
if newField == buttonName && item.firstAttribute == NSLayoutAttribute.Top
{
item.constant = -50
self.view .layoutIfNeeded()
}
}
}
}else{
print("Ads")
for item in self.view.constraints
{
if item.firstItem .isKindOfClass(UIButton)
{
let newField = item.firstItem as! UIButton
if newField == buttonName && item.firstAttribute == NSLayoutAttribute.Top
{
item.constant = 0
self.view .layoutIfNeeded()
}
}
}
loadBanner()
}