![](/img/trans.png)
[英]iOS table view with custom prototype cell in a UIViewController
[英]iOS - Can't get custom view to center in UIViewController
我很难让自定义视图在 UIViewController 中正确显示。 我是 iOS 的新手,我不确定我是否正确地限制了这一点。
我有一个 BaseTabBarController ,它设置了我的三个选项卡和控制器,效果很好。 在我的 MainFeedViewController 中,我无法限制我的自定义视图。 目前,我的自定义视图要么出现在设备的左上角,要么如下以编程方式设置约束时,视图被锚定在屏幕的右侧,当设备旋转时,就好像视图 controller 保持其横向模式下的纵向尺寸。
我很困惑,需要一些关于正确设置约束以使视图居中的指导。
另外,我应该在其 Xib 中设置我的自定义视图的大小,还是符合我在 MainFeedViewController 中设置容器视图的视图大小?
class MainFeedViewController: UIViewController {
@IBOutlet weak var articlePreview: ArticlePreviewView!
override func viewDidLoad() {
super.viewDidLoad()
setupView()
}
func setupView() {
view.backgroundColor = UIColor(named: "standardBackgroundColor")
articlePreview.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
articlePreview.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
articlePreview.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
articlePreview.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
}
class ArticlePreviewView: UIView {
@IBOutlet var contentView: UIView!
@IBOutlet weak var articleInfoContainer: UIView!
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initSubviews()
}
override init(frame: CGRect) {
super.init(frame: frame)
initSubviews()
}
func initSubviews() {
let nib = UINib(nibName: "ArticlePreviewView", bundle: nil)
nib.instantiate(withOwner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
setupViewTheme()
}
func setupViewTheme() {
contentView.backgroundColor = .blue
//articleInfoContainer.backgroundColor = .white
}
}
您不应该将自动布局与自动调整蒙版和帧大小混合在一起。 删除 ArticlePreviewView 中设置框架和 autoResizingMask 并使用约束的代码,如果您希望视图填充其超级视图,您可以使用
view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
view.leadingAnchor.constraint(equalTo: superview.leadingAnchor),
view.bottomAnchor.constraint(equalTo: superview.bottomAnchor),
view.trailingAnchor.constraint(equalTo: superview.trailingAnchor),
view.topAnchor.constraint(equalTo: superview.topAnchor)
])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.