(swift)更新一个数字到标签会使视图回到原来的位置

时间:2015-10-30 02:20:10

标签: swift

demo image

当我将数字更新为标签时,会使视图返回到原始位置。

class ViewController: UIViewController {

@IBOutlet weak var label: UILabel!
@IBOutlet var aview: UIView!

var number = 0

override func viewDidLoad() {
    super.viewDidLoad()
}

@IBAction func plus(sender: UIButton) {
    number++
    label.text = "number:\(number)"

}

@IBAction func move(sender: AnyObject) {
    aview.frame.origin.y -= 20
}   

}

我在网上找不到答案,请帮我解决这个问题。非常感谢你!

2 个答案:

答案 0 :(得分:0)

问题可能与标签重新加载时的约束重新加载有关。 不是设置aview.frame.origin.y -= 20,而是应该为保持aView的y位置的约束做出一个出口,然后更新该约束出口的常量。

答案 1 :(得分:0)

因为您设置的xib或Storyboard使用Autolayout:

因此,如果您没有设置约束系统将自动生成它。当您通过设置框架更改框架时,它会生效,但是当您访问它时。它会自动回到旧位置。

如果你不希望它发生。您在viewDidLoad中设置:

dashboard.directive('confirmOnExit', function() {
    return {
            link: function($scope, elem, attrs) {
                window.onbeforeunload = function(){
                    if ($scope.billdata.$dirty) {
                        return "The form is not saved, do you want to stay on the page?";
                    }
                }
                $scope.$on('$locationChangeStart', function(event, next, current) {
                    if ($scope.billdata.$dirty) {
                        console.log('next',next,current);
                        if(!confirm("The form is not saved, do you want to stay on the page?")) {
                            event.preventDefault();
                        }else{
                            console.log('hii');
                        }
                    }
                });
            }
        };
});