当前,我正在将Content View
大小设置为Freeform
的xib实现自定义视图。这是我的Content View层次结构
尽管“内容视图”为自由格式,但我将宽度设置为375,与iPhone 8相同。然后创建了自定义UIView文件
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit() {
Bundle.main.loadNibNamed("DetailsWeather", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
在那之后,我将xib File’s Owner
定制类名称设置为上面相同的定制UIView文件。然后,我通过添加UIView将其实现到Main.storyboard
中,正确设置约束,并为其提供与File’s Owner
相同的自定义类名称
运行iPhone 8时,一切都很完美,但切换到较小的设备(如iPhone 5s)时,我注意到我的滚动视图现在具有水平滚动了。与更大的屏幕设备(如iPhone 8+)iPhone 5s相比,我的滚动视图现在稍微偏向右侧。
因此,我尝试删除了滚动视图,并且所有设备之间的一切正常。因此,从这些角度出发,我认为滚动视图必须弄乱我的自定义视图。然后,我进行了一些自我研究,并发现了这些主题。
How to update constraints after adding UIView from xib on UIScrollView in swift?
ScrollView Add SubView in swift 3
我尝试了他们的解决方案,并进行了修改以适合我的情况,但是似乎没有一个与我合作。所以我的问题是,有没有办法使一个xib文件的内容视图适合每个宽度?
答案 0 :(得分:0)
今天刚解决,感觉很好
function from(number){
return (number+26)/4;
}
自定义类名称,并将File’s Owner
自定义类名称替换为自定义UIView Content View
中,我的情况是ScrollView。添加所有必需的约束(duh)Main.storyboard
这样的ScrollView添加IBOutlet @IBOutlet weak var scrollView: UIScrollView!
的{{1}}是您的xib文件,let alohaView = Bundle.main.loadNibNamed("Feature", owner: self, options: nil)?.first as? FeatureView
是您的自定义UIView文件控件,用于xib文件Feature
,注意我对500高度进行了硬编码,将在此高度上工作FeatureView
alohaView?.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 500)
将自定义视图添加回滚动视图