为啥当我将我的 UILabel 移动到某个点时,当我进入全屏模式时它会被移动?
Posted
技术标签:
【中文标题】为啥当我将我的 UILabel 移动到某个点时,当我进入全屏模式时它会被移动?【英文标题】:Why when I move my UILabel to a certain point, does it get moved when I enter full screen mode?为什么当我将我的 UILabel 移动到某个点时,当我进入全屏模式时它会被移动? 【发布时间】:2013-11-09 23:32:37 【问题描述】:这里的示例项目:http://cl.ly/1n211V1e433G
我正在构建一个应用程序,您可以在其中使用UIPanGestureRecognizer
在中间向上或向下滑动标签,该NSLayoutConstraint
调整常量以了解文本与底部的距离。
- (IBAction)labelPanned:(UIPanGestureRecognizer *)sender
CGPoint p = [sender locationInView:self.view];
p.y -= sender.view.frame.size.height / 2.0;
self.labelDistanceFromBottomConstraint.constant = -p.y + [UIScreen mainScreen].bounds.size.height - 250 + self.textToReadLabel.frame.size.height;
我认为该约束的优先级低于两个约束,即它必须从顶部或底部开始大于或等于 50。基本上是更强的约束,确保它不会太高或太低。
当用户进入全屏模式时,文本标签应保持在原位而不移动。如示例项目所示,它的效果很好,除非标签被移到顶部,当进入全屏模式时,它会向上滑动。
这是为什么?我怎样才能阻止这种行为?
【问题讨论】:
【参考方案1】:这是因为,您已将 UILabel
约束设置为从顶部调整大小,这导致 UILabel
在您执行全屏时视图框架发生变化时从顶部调整,所以 Remove the Top constraint
而您可以尝试例如,停止平移到某些y position
- (IBAction)labelPanned:(UIPanGestureRecognizer *)sender
CGPoint p = [sender locationInView:self.view];
if(p.y<150.0)return;
编辑
重点是你不应该为标签设置从顶部调整的约束,所以移除顶部约束当你进入全屏时它不会自动调整。
【讨论】:
更不用说在项目中如果你输入p.y < -100
,例如同样的结果。
@DougSmith 我认为你错过了一点Remove Top Constraint
,如果你删除约束并停止标签超出,我提出的值只是这样做的例子。但如果你删除顶部约束,标签不会在全屏上向上移动..你试过了吗..?以上是关于为啥当我将我的 UILabel 移动到某个点时,当我进入全屏模式时它会被移动?的主要内容,如果未能解决你的问题,请参考以下文章
当我将我的 laravel 项目放入 xampp 时,我的登录不起作用
为啥当我将 Meteor 应用程序转换为使用 Docker 时,我的 MongoDB 数据会消失?