1

使用 Interface Builder,我创建了一个包含 UIScrollView 的视图。

我以编程方式将按钮添加到空的 UIScrollView。

当方向改变时,我使用

 - (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

调用重置屏幕上的按钮的方法。

之后,uiScrollView -content使用setContentSize获得新的大小。

无论ContentSize的宽度如何,我只能在屏幕的前 320 像素(即纵向模式下的屏幕宽度)上进行交互(滚动/或点击按钮)。

例子

当我将contentSize-width设置为 2000 时,我可以向左滚动,但只能将手指放在前 320 像素而不是整个 480 像素上(使用 3.5 英寸 iPhone)。

我错过了什么?

4

2 回答 2

0

您需要调整滚动视图框架的大小,而不仅仅是内容大小(事实上,您通常不需要调整内容大小,因为内容可能不会随着方向的变化而改变,而只是框架)。

于 2013-10-10T13:44:30.453 回答
0

从(UIViewController)调用的弹出窗口(UIView)也有同样的问题。

在 UIViewController 中,弹出窗口的创建如下

func createPopup() {
    let myPopup = MyPopup(frame: UIScreen.mainScreen().bounds)
    self.view.addSubview(myPopup)
}

在弹出窗口(UIView)中,我需要覆盖 layoutSubviews,如下所示:

override func layoutSubviews() {
    super.layoutSubviews()
    self.setNeedsDisplay()

    let mainScreenBounds = UIScreen.mainScreen().bounds

    view.frame = mainScreenBounds
    super.frame = mainScreenBounds <-- Need to update the parent

    ** perform additional rotation/orientation code here **
}
于 2016-05-11T09:38:30.643 回答