2016-06-02 1 views
0

У меня есть ViewController, который имеет tableView и имеет два представления поверх представления таблицы. Мне нужно свернуть вид (обозначенный красным на изображении), когда пользователь прокручивается вверх и перемещает другой вид (оранжевая кнопка) вверх со столом. Я планирую использовать метод делегата scrollViewDidScroll для определения смещения таблицы и обработки с этим сбрасыванием.Свернуть это изображение на странице прокрутки вверх (iOS)

Как это осуществить?

enter image description here enter image description here

//Custom delegate method, which returns offset of scrollViewDidScroll 
func didScrollScrollView(offset: CGFloat){ 
    print(offset) 
    //I have the offset, which is -30 on load. How do I implement collapsing of the view highlighted in red? 

} 

ответ

0

вы должны получить доступ к кадр зрения или лучше его heightConstraint. Если у вас есть ссылка на heightConstrain вы можете сделать:

var previousOffset: CGFloat = -30 
func didScrollScrollView(offset: CGFloat){ 
    let diff = previousOffset - offset 
    previousOffset = offset 

    var newHeight = heightConstraint.constant + diff 

    if newHeight < 0 { 
     newHeight = 0 
    } else if newHeight > 60 { // or whatever 
     newHeight = 60 
    } 
    heightConstraint.constant = newHeight 
} 

Если вы не используете Autolayout вам необходимо обновить кадры Мануалы.

также установить clipsSubviews = TRUE (clippedToBounds) в интерфейсе строителя или в коде

+0

его делает заголовок меньше, но метки внутри не сокращается –

+0

Это ответ, хотя там должно быть некоторое редактирование в коде (вы забыли знак равенства на последней строке, нужны фигурные скобки для оператора if). Обязательно установите clippedToBounds = true или сделайте это на раскадровке. –

+0

О да, конечно, я свободно печатал без XCode, извиняюсь за ошибки синтаксиса –

Смежные вопросы