ios - ScrollView 中的重叠元素

标签 ios swift uiscrollview

尝试使用代码中创建的元素制作 ScrollView ,但我使这些元素彼此重叠。 Scrollview本身是用 Storyboard制作的。这是我的代码:

class ViewController: UIViewController {
    @IBOutlet weak var scrollView: UIScrollView! {
        didSet {
            scrollView.backgroundColor = .yellow
        }
    }

    lazy var im: UIImageView = {
        let im = UIImageView(frame: CGRect(x: 10, y: 74, width: self.view.frame.size.width - 20, height: 200))
        im.backgroundColor = .white
        return im
    }()

    lazy var label: UILabel = {
        let l = UILabel(frame: CGRect(x: 10, y: 284, width: self.view.frame.size.width - 20, height: CGFloat.greatestFiniteMagnitude))
        l.numberOfLines = 0
        l.lineBreakMode = .byWordWrapping
        l.text = "crazy amount of text"
        l.sizeToFit()
        self.scrollView.contentSize = CGSize(width: self.view.frame.width, height: l.frame.height + 280)
        return l
    }()


    override func viewDidLoad() {
        super.viewDidLoad()
        self.scrollView.addSubview(im)
        self.scrollView.addSubview(label)
    }
}

enter image description here

白色矩形是imageView!

如何防止这些元素重叠?

最佳答案

您可以将惰性变量im的代码更改为

lazy var im: UIImageView = {
        let im = UIImageView(frame: CGRect(x: 10, y: self.label.frame.height, width: self.view.frame.size.width - 20, height: 200))
        im.backgroundColor = .white
        return im
}()

要使图像位于顶部,您可以在 l.sizeToFit() 之后添加 l.frame.y = self.im.frame.height

lazy var label: UILabel = {
        let l = UILabel(frame: CGRect(x: 10, y: 200, width: self.view.frame.size.width - 20, height: CGFloat.greatestFiniteMagnitude))
        l.numberOfLines = 0
        l.lineBreakMode = .byWordWrapping
        l.text = "Big Text"
        l.sizeToFit()
        l.frame.y = self.im.frame.height
        self.scrollView.contentSize = CGSize(width: self.view.frame.width, height: l.frame.height + 280)
        return l
    }()

这会给你想要的结果。 希望对您有帮助!

关于ios - ScrollView 中的重叠元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43714878/

相关文章:

ios - swift 将图片/视频发布到推特

ios - 切换 VC 后多点连接 session 断开

ios - UIScrollView 只能用一根手指滚动

ios - 动画: moving a UIView up and off the screen by its height - SWIFT

ios - 在 Swift 4 中显示实时时间标签?

ios - 在 Swift 中搜索以\n\n 开头的字符串

ios - iOS UILabel 约束是否来自边距被破坏的代码?

ios - swift 的语言。如何通过父类(super class)变量初始化我的类?

ios - 如何在 UICollectionView 上面实现内容 View

ios - 许多 UIImageView 的内存管理