172 похожих чатов

Всем привет, заметил какое то странное поведение UIScrollView, мне нужно

разместить на экране ScrollView а в него запихнуть объекты, например пусть это будет UIView у которого высота 4000, если я буду размещать UIView на ScrollView с помощью констрейнт SnapKit, то на экране отображеться scrollView и uiview, но scrollView не крутиться, а если я размещаю uiview вот таким образом:


vieww.frame = CGRect(x: 50, y: 200, width: 100, height: 4000)


то все отображеться и scrollView крутиться, у меня вопрос почему так получаеться и как мне размещать объекты на scrollView с помощью SnapKit???

p.s вот полный код:

import UIKit
import SnapKit

class MainScreenView: UIViewController {

private let myScrollView = UIScrollView()
private let vieww = UIView()


override func viewDidLoad() {
super.viewDidLoad()

view.backgroundColor = .systemBackground

setupUI()
}

private func setupUI() {

view.addSubview(myScrollView)
myScrollView.addSubview(vieww)

myScrollView.snp.makeConstraints { make in
make.top.equalToSuperview()
make.leading.equalToSuperview()
make.trailing.equalToSuperview()
make.bottom.equalToSuperview()
}


vieww.snp.makeConstraints { make in
make.top.equalToSuperview().inset(50)
make.centerX.equalToSuperview()
make.height.equalTo(4000)
make.width.equalTo(100)
}


//vieww.frame = CGRect(x: 50, y: 200, width: 100, height: 4000)

vieww.backgroundColor = .accent
myScrollView.contentSize = vieww.bounds.size
myScrollView.showsVerticalScrollIndicator = true
myScrollView.backgroundColor = .gray


}



}

2 ответов

97 просмотров

Нижний констрейнт надо задать

так получается, потому что система не может вычислить размер контента скроллвью. причем ни по вертикали ни по горизонтали. чтобы вычислить размеры нужно либо задать contentSize (что ты и делаешь, когда руками прописываешь фрейм дочерней вью, а затем эти размеры устанавливаешь на скролл), либо задать констрейнты, которые будут этот размер позволять высчитывать, например, привязать дочернюю вью к contentLayoutGuide скрола со всех сторон, а саму дочернюю вью с фиксированными размерам (например задать констрейнты ширины и высоты, либо возвращать что-нибудь желаемое в свойстве intrinsicSize)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта