UIScrollView的右侧部分在横向模式下不起作用

时间:2013-10-10 13:40:07

标签: iphone ios objective-c uiscrollview

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

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

当方向改变时,我使用

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

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

之后, uiScrollView -content使用 setContentSize 获得新尺寸。

无论 ContentSize 的宽度如何,我只能在屏幕的第一个320px上进行交互(滚动/或点击按钮) - 这是纵向模式下的屏幕宽度。

Example

当我将 contentSize-width 设置为2000时,我可以向左滚动,但只能用我的手指在前320 px而不是全部480(使用3.5英寸iPhone)。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

您需要调整scrollview框架的大小,而不仅仅是内容大小(事实上,通常您需要调整内容大小,因为内容在更改方向后可能不会更改,但只是框架。)

答案 1 :(得分:0)

我从(UIViewController)调用的Popup(UIView)遇到了同样的问题。

在UIViewController中,弹出窗口按照

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

在Popup(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 **
}