更新内容时,UIScrollView框架y坐标向上20像素

时间:2015-02-04 20:32:17

标签: ios swift uiscrollview

原始视图,位于顶部位置:
enter image description here

添加新内容后查看,位于顶部位置(视图向上移动20像素)
enter image description here

滚动一点额外的顶部后查看(就像刷新内容时一样)
enter image description here

因此,当我在此视图中添加新视图并更新大小和所有内容以使其看起来正确时,我仍然有一个无法解决的问题。这使得滚动视图从y轴上的法线点上方20像素开始。

我尝试通过向scrollView框架添加+20像素来修复此问题。当我只进行1次更新时,它工作正常,如果我现在进行多次更新,则scrollView会在实际应该开始的位置下方启动很多像素。我尝试了锁定+20添加只在第一次发生时,它没有用。另外,在新视图中,scrollview也完全混乱。

我没有storyboard或xib。该项目以编程方式完整开发。

顺便说一句,我检查了scollView,self.view,cardView中的每个变量,我认为这会影响到这一点。问题是它们的帧变量都没有任何变化。但他们的行为就像改变了一样,我无法弄清楚是什么。

override func viewDidLoad() {
    super.viewDidLoad()

    self.automaticallyAdjustsScrollViewInsets = false

    navigationController?.navigationBar.hidden = false

    createScrollView()
}

//我如何在viewdidload中创建SV

func createScrollView() {
    scrollView.frame = self.view.frame
    scrollView.showsVerticalScrollIndicator = true
    scrollView.scrollEnabled = true
    scrollView.userInteractionEnabled = true
    scrollView.delegate = self
    scrollView.sizeToFit()
    scrollView.contentSize = CGSize(width: cardWidth, height: 100)
    view.addSubview(scrollView)
}

//如何在我的scrollview中创建视图

func makeNewCard() {
    var newCard = CardView()
    newCard.createCard(sender: self)

    gestureRecognizer = UIPanGestureRecognizer(target: self, action: Selector("cardWasDragged:"))
    gestureRecognizer.delegate = self
    newCard.addGestureRecognizer(gestureRecognizer)

    scrollView.contentSize = CGSize(width: cardWidth, height: newCard.frame.height + CGFloat(50 + 64))
    scrollView.addSubview(currentCardView)
}

//在另一个View类中创建我的视图

func createCard(#sender: CardVC) {
    frame = CGRect(x: ScreenWidth/15, y: 64, width: cardWidth, height: cardHeight)
    contentMode = UIViewContentMode.ScaleAspectFit
    userInteractionEnabled = true
}

//在视图中添加约20-50像素的新内容

func newContent() {
    var extraHeight = newHeight

    frame = CGRect(x: ScreenWidth/15, y: 64, width: cardWidth, height: frame.height + extraHeight)

    senderView.scrollView.contentSize = CGSize(width: cardWidth, height: senderView.scrollView.contentSize.height + extraHeight - 20) //Had to put -20, I guess I will remove the -20 after this is fixed     
}

1 个答案:

答案 0 :(得分:1)

可能是因为ViewController属性(在Top Bars下)我遇到了同样的问题。

代码

    self.extendedLayoutIncludesOpaqueBars = NO;

尝试将其更改为:

enter image description here

如果有效,请重播吗?如果不是的话,我会尝试思考能够导致它的其他事情。 祝你好运