Jov*_*in_ 15 uiimageview ios uipageviewcontroller swift
我正在构建一个新的应用程序,并希望在开头有一个"欢迎演练",其中我有一个故事板,其中包含一系列在UIPageViewController中呈现的图像.我有它加载图像和所有这些都很好,但是只要它们超出"前一个"或"下一个"ViewController,图像就会调整大小.我正在Swift用来发展.
以下是该问题的视频:http://youtu.be/dXcjjT-8Bk0
我尝试了所有不同的视图模式(Aspect fit,aspect fill,redraw等),它们的行为都相同.
我正在使用Auto-Layout + Size Classes,因为我希望简化不同屏幕尺寸的开发.我目前的限制使UIImage以正确的大小显示:
Align Centre X to Superview
Top Space to Top Layout Guide
Bottom Space to Bottom Layout Guide + Equals: 50
Run Code Online (Sandbox Code Playgroud)
我正在使用Aspect Fit它,它给了我正确的图像(在他们完成'调整大小行为'之后.
任何人都可以进一步指导我如何解决这个问题?
Chr*_*den 14
从您的视频中,我注意到您的UIImageView内容始终是"调整大小",而不是在底部.这肯定是因为您的自动布局约束称为"顶部空间到顶部布局指南".当您UIImageView的视图控制器正在通过滚动页面视图控制器进行转换时,它不知道顶部布局指南的位置,因此它topLayoutGuide.length是0.只有在动画完成后,视图控制器才会获得正值topLayoutGuide.length.是的,页面视图控制器应该比这更智能,但事实并非如此.
您可以停止使用顶部布局指南,并相对于其超级视图的顶部进行自动布局约束.或者您可以继续使用顶部布局指南,但考虑到它的length时间0.您可以通过一个出口为你的故事板的做到这一点NSLayoutConstraint,并覆盖viewWillLayoutSubviews()在你的ViewController包含您的UIImageViewS:
@IBOutlet weak var topSpaceToTLG: NSLayoutConstraint!
var parentTLGlength: CGFloat = 20
override func viewWillLayoutSubviews() {
if self.topLayoutGuide.length == 0 {
// Lengthen the autolayout constraint to where we know the
// top layout guide will be when the transition completes
topSpaceToTLG.constant = parentTLGlength
} else {
topSpaceToTLG.constant = 0
}
}
Run Code Online (Sandbox Code Playgroud)
UIImageView假设状态栏始终为20点,这将始终将您的顶部放在顶部布局指南中.在布置子视图之前,它将检查顶部布局引导长度是否0合适,并相应地调整自动布局约束.过渡动画完成后,将再次触发布局,并且顶部布局引导长度将是预期值,因此约束常量可以返回到0.比硬编码更好的是在初始化期间传递父视图控制器的确切长度,考虑到顶部布局指南的任何可能的更改,如添加导航栏.
| 归档时间: |
|
| 查看次数: |
2770 次 |
| 最近记录: |