【发布时间】:2014-11-15 19:11:40
【问题描述】:
每次我创建我的UIScrollView 子类时,我都会向它添加一个UIImageView。我从滚动视图的init 方法中获取UIImageView 的图像,其中我传递了UIImage。
但是我在哪里添加这个子视图?通常我会在awakeFromNib 中执行此操作,但这是以编程方式创建的。在 init 方法中弄乱视图层次结构是一种不好的做法。
我应该在哪里做?
【问题讨论】:
-
我认为没有好地方可以做这件事意味着这可能不是一个好方法......是否可以从包含滚动视图的视图控制器构建视图层次结构?您将创建scrollView,然后将imageView 添加到scrollView。然后,将 imageview 的所有边缘约束到 scrollView。调用 imageview.sizeToFit,它会自动让自己在 scrollView 的范围内滚动。
-
^ 可能是最好的建议,除非有充分的理由为您的 UIScrollView 创建一个新类。
-
@AnnaDickinson 我不明白,UIButton 之类的有一个
titleLabel属性,即按钮标题的UILabel。他们如何自动设置 UIView?UIView子类不能自动由其他子UIViews 组成,这似乎很奇怪,尤其是当它很容易使用 Interface Builder/nibs 时。一定有办法的。 -
更多讨论:stackoverflow.com/questions/15978370/… @Acey - 是的,我改变了主意。听起来您在初始化期间创建了子视图。然后,您可以在 layoutSubviews 中移动它们/调整它们的大小。我认为您会在 layoutSubviews 中设置 scrollView 内容大小,以便它可以处理可能调整大小的 imageView。 ....我不知道,我最近一直在讨论这整个问题并接受自动布局。 :-)
-
@AnnaDickinson 尽管我很想这样做,但滚动视图和自动布局仍然看起来很糟糕。
标签: ios objective-c cocoa-touch uiview uiscrollview