ios - 请问在写autolayout 约束时候怎么优雅的完成控件顶部距离为父视图高度的等比?
迷茫
迷茫 2017-04-17 15:26:30
[iOS讨论组]

比如 我有一个imageView 加在自身的view上。
想让imageView 距离顶部的距离为 view高度的1/4 应该怎么写?

我自己写的:

 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeHeight multiplier:0.25 constant:0]];

我理解的 imageView.top = self.view.height*0.25 + 0 的逻辑感觉没什么问题,但是运行报错。。 求解答。
'NSInvalidArgumentException', reason: '*** +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Invalid pairing of layout attributes'

然后我在stackoverflow 上找到答案 是向下面这么写:

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.imageView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:0.25 constant:0]];

运行成功。 但我不能理解
imageView.top = self.view.bottom *0.25 + 0

这里self.view.bottom是多少? view是self.veiw 父视图了~
他的bottom多少呢? 又是相对什么而言得出的数值呢? 理解不能 求大神解答!

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
PHPz

如果用storyboard可以这样:
1.把imageview的顶部拖到与superview的bottom齐平。
2.改变Align Center Y的Mutiplier,1改为4,即为superview的1/4处。

PHPz

你可以这样理解,imageView.top = self.view.bottom*1 就是:

                   |
  self.view.bottom |  
      v            |
------------------(1)
      ^            |
  imageView.top    |
                   |

imageView.top = self.view.bottom*0.25,就是在上面的基础上乘以0.25,就是:

------------ > (self.view.top)
(self.view)
------------ > self.view.bottom * 0.25
     ^
imageView.top

------------ > self.view.bottom * 1
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号