我遇到以下情况。在一种情况下,我需要在视图的左侧布局一个元素,在另一种情况下,需要在视图的右侧呈现相同的视图。这两个约束显然是相互冲突的。
def action_style
diameter = rmq.device.width*0.06
constraints do
width.is diameter
height.is diameter
center_y :image
end
reapply do
constraints do
offset = rmq.device.width*0.08
if self.even
left.is 20
else
right.is -offset
end
end
end
end
Left
和Right
是相互矛盾的,我没有得到预期的结果。有没有办法禁用例如left
约束或禁用/取消设置所有约束?
我没有成功取消设置/删除约束属性。目前,我通过引用 left 属性并在需要时更改其值来修复它。
def action_style
diameter = rmq.device.width*0.06
offset = rmq.device.width*0.08
constraints do
width.is diameter
height.is diameter
center_y :image
@left = left.is offset
end
reapply do
constraints do
if self.even
@left.constant = offset
else
@left.constant = rmq.device.width/2-offset-diameter
end
end
end
end
我建议完全重新设置约束。
def action_style
diameter = rmq.device.width * 0.06
reapply do
target.removeConstraints(target.constraints)
constraints do
width.is diameter
height.is diameter
center_y :image
offset = rmq.device.width * 0.08
if self.even
left.is 20
else
right.is -offset
end
end
end
end