更新: 这是iOS 10的问题。在iOS 9中,这仍然像以前一样工作。
这很有趣。
我刚刚将我的“教学项目”(一个“玩具”应用程序)转换为Swift 3。它在Swift 1.2下工作了几年。
突然间,即使我将contentSize设置得远远超出其下边界,我的UIScrollView也无法滚动。
以下是相关代码(displayTags例程被调用时,使用一个图像数组进行显示,这些图像居中并略微垂直偏移,从而形成一个垂直链):
请注意,每次添加标签时,scrollView的contentSize会扩展。我检查过(请参见打印语句),该值似乎是正确的。 该项目本身完全开源。 这就是问题出现的地方(我还有其他错误,但是我会在解决这个问题后解决它们)。
我相信我正在做一些显而易见和愚蠢的事情(通常情况下)。你有什么想法吗?
这很有趣。
我刚刚将我的“教学项目”(一个“玩具”应用程序)转换为Swift 3。它在Swift 1.2下工作了几年。
突然间,即使我将contentSize设置得远远超出其下边界,我的UIScrollView也无法滚动。
以下是相关代码(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)
}
请注意,每次添加标签时,scrollView的contentSize会扩展。我检查过(请参见打印语句),该值似乎是正确的。 该项目本身完全开源。 这就是问题出现的地方(我还有其他错误,但是我会在解决这个问题后解决它们)。
我相信我正在做一些显而易见和愚蠢的事情(通常情况下)。你有什么想法吗?