以编程方式改变UIView的位置

时间:2015-09-21 05:46:53

标签: ios objective-c uiview autolayout

ScreenShot

我的应用程序中有一个阿拉伯语页面,阿拉伯语页面中的“日期字段”必须与视图的右侧对齐(现在,它位于左侧)。我试过以下代码

    -(void)changeDatePosition{
    if (!_isEnglish) {
        CGRect currentDatePostion=_viewForDate.frame;
        [_viewForDate removeFromSuperview];
        currentDatePostion.origin.x+=currentDatePostion.size.width;
        _viewForDate.frame=currentDatePostion;
        [_baseView addSubview:_viewForDate];
    }
}

但这没有帮助。视图定位在导航栏的顶部(x坐标也没有变化)。我使用autolayout将“ViewForDate”(日期字段)的左前导空格与“PlacesView”(日期字段顶部的视图)的前导空格对齐。但我把它的优先级设定为250.我可以解决这个问题吗?

4 个答案:

答案 0 :(得分:1)

-(void)changeDatePosition{
    if (!_isEnglish) {
        CGRect currentDatePostion=_viewForDate.frame;
        [_viewForDate removeFromSuperview];
        float ScreenWidth=_viewForDate.frame.size.width;
        currentDatePostion.origin.x=ScreenWidth-currentDatePostion.size.width;
        _viewForDate.frame=currentDatePostion;
        [_baseView addSubview:_viewForDate];
    }
}

请你试试。可以解决你的问题

答案 1 :(得分:1)

试试这段代码。

currentDatePosition = CGRectMake(self.view.frame.size.width - currentDatePosition.size.width, currentDatePosition.frame.origin.y, currentDatePosition.frame.size.width, currentDatePosition.frame.size.height);

答案 2 :(得分:1)

将IBOutlet挂钩到日期视图的前导约束并将其值设置为0.然后尝试以下代码:

-(void)changeDatePosition{
    if (!_isEnglish) {
        _dateViewLeadConstraint.constant = x;
    }
    //x - amount by which view should move right, you can calculate based on your view setup
}

答案 3 :(得分:0)

我找到了问题的解决方案并对此感到非常高兴。

DateView具有左对齐(前导空格)到场所设置为0.我也为它做了一个右对齐(在144)。然后我为它们创建了Outlets,即leftAlignment(= 0)和rightAlignment(= 144)并编写了这个方法。

-(void)changeDateLocation{
    if (!_isEnglish) {
        _leftAlignment.priority=UILayoutPriorityDefaultLow;
        _rightAlignment.constant=0;
        _rightAlignment.priority=UILayoutPriorityDefaultHigh;
    }
    else{
        _leftAlignment.priority=UILayoutPriorityDefaultHigh;
        _rightAlignment.priority=UILayoutPriorityDefaultLow;
        _leftAlignment.constant=0;
    }
}

这给了我解决方案。我感谢所有贡献的人。我认为这种方法非常有用。我是第一次尝试这个