Swift + UIView:如何更改y坐标?

时间:2016-01-19 22:01:40

标签: ios swift

我有一个名为descriptionView的UIView,我想在屏幕首次加载时隐藏它,方法是将y坐标偏移为屏幕尺寸+ descriptionView本身的高度:

enter image description here

但是,在我的控制器中,我的帧更改都没有做任何事情:

  override func viewDidLoad() {
    super.viewDidLoad()
    ...
//    descriptionView.frame.origin.y =  self.view.frame.height
//    UIView.animateWithDuration(1, animations: {
//      self.descriptionView.frame.origin.y =  self.view.frame.height
//      self.view.layoutIfNeeded()
//    })
//    
    print("xxx")
    descriptionView.frame = CGRectMake(0, self.view.frame.height, self.view.frame.width, 66)
//    descriptionView.frame = CGRectOffset(descriptionView.frame, 0, descriptionView.frame.height)
  }

无论我做什么,它似乎固定在我的故事板中的那个可见位置。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

+------------------------+-------------------------------+ | AjaxOptions | HTML attribute | +------------------------+-------------------------------+ | Confirm | data-ajax-confirm | | HttpMethod | data-ajax-method | | InsertionMode | data-ajax-mode | | LoadingElementDuration | data-ajax-loading-duration | | LoadingElementId | data-ajax-loading | | OnBegin | data-ajax-begin | | OnComplete | data-ajax-complete | | OnFailure | data-ajax-failure | | OnSuccess | data-ajax-success | | UpdateTargetId | data-ajax-update | | Url | data-ajax-url | +------------------------+-------------------------------+ 中您正在使用IB,因此您需要操纵约束,或者告诉视图将遮罩转换为约束。

如果你想直接设置框架,那么你会想要这样做:

NSAutoLayout

否则,您可以从IB创建descriptionView.translatesAutoresizingMaskIntoConstraints = true descriptionView.frame = CGRectMake(...) IBOutlets约束的height并更新它们:

width

此外,我建议在self.descriptionViewHeight.constant = self.view.frame.width 内而不是viewWillAppear:内进行帧操作。 viewDidLoad并不严格保证最终职位。

答案 1 :(得分:1)

不要编辑框架或export default DS.Store.extend({ updateId: function(record, data) { var oldId = Ember.get(record, 'id'); var id = coerceId(data.id); if (oldId && oldId !== id) { this.typeMapFor(record.constructor).idToRecord[oldId] = record; } else { this.typeMapFor(record.constructor).idToRecord[id] = record; } Ember.set(record, 'id', id); }, }; ,而是编辑其高度约束。

首先,通过cmd将高度约束从Interface Builder拖到类中,从此约束创建descriptionView(就像对任何UI对象一样)。

然后,您可以将此约束的NSLayoutConstraint属性设置为0。

(是的,constant被声明为constant属性...)

答案 2 :(得分:1)

如果使用约束,则查看框架视图myView.frame属性不会影响视图的实际位置和大小。取而代之的是制作约束并在代码中更改它,它将如下所示:

descriptionView.heightConstraint.constant = 100

此外,如果您想隐藏某些内容,可以使用属性myView.hidden = truemyView.alpha = 0;