Переменная высота для представленного UIView - PullRequest
0 голосов
/ 27 марта 2019

0

У меня есть сегментированный контроллер, который вызывает два xib-файла UIViews на экран.Каждый вид будет различаться по длине в зависимости от их содержания.Как содержание для каждого представления отличается.UIView устанавливаются в виде прокрутки.

Я вытягиваю Selected UIView перед другими, когда оно выбрано с использованием сегментированного контроллера.Проблема в том, что при прокрутке вниз видны более длинные представления.Я не могу понять, как разрешить только прокрутке вниз до нижней части UIView, который был вытянут к фронту.

Я играл с simpleViewX.isHidden или simpleViewY.isHidden в функции tabselectedно это на самом деле не решает ситуацию, потому что я все еще могу прокрутить вниз в пустое пространство.

class foodinfo: UIViewController {

var counter = Int()

@IBOutlet var tabs: UISegmentedControl!
@IBOutlet var shiftView: UIView!
@IBOutlet var theTitleLable: UILabel!

var simpleViewX: UIView!
var simpleViewY: UIView!

var theTitleArray = ["Title1","Title2","Title3","Title4","Title5","Title6","Title7"]

override func viewDidLoad() {

//Different subViews for each selection
if counter == 0 {
    simpleViewX = SimpleVC0().view
    simpleViewY = SimpleVC1().view
    shiftView.addSubview(simpleViewY)
    shiftView.addSubview(simpleViewX)
}

if counter == 1 {
    simpleViewX = SimpleVC2().view
    simpleViewY = SimpleVC3().view
    shiftView.addSubview(simpleViewY)
    shiftView.addSubview(simpleViewX)
}

if counter == 2 {
    simpleViewX = SimpleVC4().view
    simpleViewY = SimpleVC5().view
    shiftView.addSubview(simpleViewY)
    shiftView.addSubview(simpleViewX)
}

if counter == 3 {
    simpleViewX = SimpleVC6().view
    simpleViewY = SimpleVC7().view
    shiftView.addSubview(simpleViewY)
    shiftView.addSubview(simpleViewX)
}

if counter == 4 {
    simpleViewX = SimpleVC8().view
    simpleViewY = SimpleVC9().view
    shiftView.addSubview(simpleViewY)
    shiftView.addSubview(simpleViewX)
}

if counter == 5 {
    simpleViewX = SimpleVC10().view
    simpleViewY = SimpleVC11().view
    shiftView.addSubview(simpleViewY)
    shiftView.addSubview(simpleViewX)
}

if counter == 6 {
    simpleViewX = SimpleVC12().view
    simpleViewY = SimpleVC13().view
    shiftView.addSubview(simpleViewY)
    shiftView.addSubview(simpleViewX)
}
}


func getTitle() {
theTitleLable.text = theTitleArray[counter]
 }

@IBAction func tabselected(_ sender: Any) {
switch (sender as AnyObject).selectedSegmentIndex {
case 0:
    shiftView.bringSubviewToFront(simpleViewX)
    break
case 1:
    shiftView.bringSubviewToFront(simpleViewY)
    break
   default:
    break
}
}
}

1 Ответ

0 голосов
/ 27 марта 2019

Вы можете попробовать

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    let selectedView = firstView.isHidden ? secondView : firstView

    if scrollView.contentOffset.y > selectedView.frame.height {

        scrollView.setContentOffset(selectedView.frame.height, animated: false)
    }

}

Вы также можете добавить некоторые отступы, если хотите

...