首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >滚动视图上不显示文本视图

滚动视图上不显示文本视图
EN

Stack Overflow用户
提问于 2018-09-04 01:33:33
回答 2查看 286关注 0票数 0

我有一个名为TeamDetailsViewController的视图控制器。我以编程方式将滚动视图添加到视图控制器中,并将UITextview添加为滚动视图的子视图。但是由于未知的原因,文本视图没有显示出来。请帮帮忙。以下是我的代码

代码语言:javascript
复制
class TeamDetailsController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationController?.navigationBar.prefersLargeTitles = false

        setupViews()
    }

    lazy var scrollView: UIScrollView = {
        let sv = UIScrollView(frame: self.view.bounds)
        sv.backgroundColor = .blue

        sv.autoresizingMask = UIViewAutoresizing(rawValue: UIViewAutoresizing.RawValue(UInt8(UIViewAutoresizing.flexibleWidth.rawValue) | UInt8(UIViewAutoresizing.flexibleHeight.rawValue)))

        sv.contentSize = CGSize(width: self.view.bounds.size.width, height: self.view.bounds.size.height * 2);
        return sv
    }()

    var textView: UITextView = {
        var tv = UITextView()
        tv.textColor = .darkGray
        tv.backgroundColor = .black
        tv.font = UIFont.systemFont(ofSize: 16)
        return tv
    }()

    func setupViews() {

        view.backgroundColor = .white
        view.addSubview(scrollView)            
        scrollView.addSubview(textView)

        scrollView.addConstraintsWithFormat(format: "H:|-16-[v0]-16-|", views: textView)
        scrollView.addConstraintsWithFormat(format: "V:|-16-[v0]-16-|", views: textView)           
    }
}
EN

回答 2

Stack Overflow用户

发布于 2018-09-04 02:03:11

试试这段代码;

代码语言:javascript
复制
    var textView: UITextView = {
    var tv = UITextView()
    tv.textColor = .darkGray
    tv.backgroundColor = .black
tv.translatesAutoresizingMaskIntoConstraints = false
    tv.font = UIFont.systemFont(ofSize: 16)
    return tv
}()
票数 0
EN

Stack Overflow用户

发布于 2018-09-04 02:24:02

在此变体中,您将scrollView contentSize explicit设置为frame。您不应对scrollView的子视图使用自动布局约束。试试这个:

代码语言:javascript
复制
func setupViews() {
    view.backgroundColor = .white
    view.addSubview(scrollView)
    scrollView.addSubview(textView)
    textView.frame = CGRect.init(origin: CGPoint(0, 0), size: scrollView.contentSize).insetBy(dx: 16, dy: 16)
}

另一种变体是不将scrollView contentSize显式设置为框架,并使您的scrollView subViews约束到scrollView的边缘,并通过约束设置此subViews的高度和宽度,scrollView将从该宽度和高度约束中获得内容大小。示例:

代码语言:javascript
复制
view.addSubview(scrollView)
    scrollView.topAnchor.constraint(equalTo: view.topAnchor, constant: 0).isActive = true
    scrollView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0).isActive = true
    scrollView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 0).isActive = true

    scrollView.addSubview(imageView)
    imageView.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 0).isActive = true
    imageView.leftAnchor.constraint(equalTo: scrollView.leftAnchor, constant: 0).isActive = true
    imageView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: 0).isActive = true
    imageView.rightAnchor.constraint(equalTo: scrollView.rightAnchor, constant: 0).isActive = true
imageView.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.width).isActive = true
imageView.heightAnchor.constraint(equalToConstant: view.frame.height - 32).isActive = true

不要忘记设置scrollViews及其子视图

代码语言:javascript
复制
scrollView.translatesAutoresizingMaskIntoConstraints = false
imageView.translatesAutoresizingMaskIntoConstraints = false
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52154181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档