ОБНОВЛЕНИЕ: Это проблема с iOS 10. Это все еще работает по-прежнему в iOS 9.iOS 10 Проблема: UIScrollView не прокручивается, даже когда ContentSize установлен
Это ... интересно.
Я просто конвертируюсь мой «обучающий проект» («игрушка» приложение) для Swift 3.
Он работал в течение нескольких лет под Swift 1.2.
Внезапно мой UIScrollView не прокручивается, даже когда я задал путь contentSize за его нижней границей.
Вот соответствующий код (подпрограмма displayTags вызывается с массивом изображений, отображаемых в центре и слегка вертикально смещенных, что приводит к вертикальной цепи):
/*******************************************************************************************/
/**
\brief Displays the tags in the scroll view.
\param inTagImageArray the array of tag images to be displayed.
*/
func displayTags (inTagImageArray:[UIImage])
{
self.tagDisplayView!.bounds = self.tagDisplayScroller!.bounds
if (inTagImageArray.count > 0) // We need to have images to display
{
var offset:CGFloat = 0.0 // This will be the vertical offset for each tag.
for tag in inTagImageArray
{
self.displayTag (inTag: tag, inOffset: &offset)
}
}
}
/*******************************************************************************************/
/**
\brief Displays a single tag in the scroll view.
\param inTag a UIImage of the tag to be displayed.
\param inOffset the vertical offset (from the top of the display view) of the tag to be drawn.
*/
func displayTag (inTag:UIImage, inOffset:inout CGFloat)
{
let imageView:UIImageView = UIImageView (image:inTag)
var containerRect:CGRect = self.tagDisplayView!.frame // See what we have to work with.
containerRect.origin = CGPoint.zero
let targetRect:CGRect = CGRect (x: (containerRect.size.width - inTag.size.width)/2.0, y: inOffset, width: inTag.size.width, height: inTag.size.height)
imageView.frame = targetRect
containerRect.size.height = max ((targetRect.origin.y + targetRect.size.height), (containerRect.origin.y + containerRect.size.height))
self.tagDisplayView!.frame = containerRect
self.tagDisplayView!.addSubview (imageView)
self.tagDisplayScroller!.contentSize = containerRect.size
print ("Tag Container Rect: \(containerRect)")
print (" Tag ScrollView Bounds: \(self.tagDisplayScroller!.bounds)")
inOffset = inOffset + (inTag.size.height * 0.31)
}
Обратите внимание, что contentSize в Scrollview по расширяется каждый время добавления тега. Я проверил (см. Инструкции печати), и значение кажется правильным.
The project itself is completely open-source.
This is where this issue manifests (у меня есть другие ошибки, но я доберусь вокруг, чтобы фиксируя их после того, как я прибить этот).
Я уверен, что я делаю что-то очевидное и пронзительное (обычно дело).
У кого-нибудь есть идеи?
Я думаю, что проблема с uiview, вы не установили высоту. – Do2
Я проверю это. Высота устанавливается (и удаляется во время сборки) в раскадровке, но я не устанавливаю ее здесь. Вполне возможно, что вы правы. Я обнаружил, что недокументированные (или явно не заявленные) вещи часто меняются при обновлении ОС. Я тестировал это только в iOS 10. Интересно, будет ли он работать снова в iOS 9? Если это так, у меня есть другое приложение, которое мне тоже нужно будет настроить. Благодаря! –
Ну, я только что проверил. Работает в 9,3, но не в 10. ОС представила Curveball. Высота устанавливается (см., Что я устанавливаю фрейм). Мне нужно выяснить, почему iOS 10 внезапно не нравится. Я делаю почти то же самое в другом приложении, и я обеспокоен. –