因爲項目須要自定義一個日曆,後來在GitHub上找到了FSCalendar跟咱們的項目需求很類似,就想拿過來改一下,看了看代碼,做者邏輯代碼能力挺強悍的(最起碼我看代碼饒了很長時間尚未徹底看懂)。咱們的需求就是要把FS日曆的hearder換成中間顯示月份兩邊是兩個button能夠點擊向左向右切換月份,因爲做者全部切換日曆的邏輯都寫在Scrollview的代理方法scrollViewDidScroll裏面,因此在個人button點擊事件裏面設置Scrollview的contentoffset的時候,系統會自動調用ScrollviewDidScroll方法,因此除了執行點擊事件裏面我設置的更換日曆相關邏輯,還會自動調用ScrollviewDidScroll方法中實現的邏輯,致使混亂。最終仍是受做者的代碼啓發,使用bounds代替contentoffset,一樣實現切換Scrollview顯示的位置可是不會觸發ScrollviewDidScroll方法,核心代碼以下:ide
_scrollView.bounds = CGRectOffset(_scrollView.bounds, self.flowOffset.x, self.flowOffset.y);spa
其實bounds的x,y值也是能夠不爲0的,不爲0時表明相對於自身座標系的位置偏移,和contentoffset做用類似,作個筆記,若有錯誤,敬請指出!3d