2010-04-18 72 views
0

對不起,對於冗長的帖子。UIScrollView存在問題

我想了解UIScrollView並運行到非常簡單的問題。

  1. 我創建一個滾動視圖
  2. 我提出這個觀點1.5大小再進行正常大小
  3. 使用的UIScrollView我希望看到的景色出界的一些邊緣內容,但應該能夠平移該視圖因此將丟失的元素帶回可見區域。

但是我看到了,我不能只是平移/滾動視圖反正我想要的,而不是查看總要向上滾動,只要我的手指從屏幕(觸摸結束事件)搬走。

我沒有處理任何觸摸等 - 我只是想了解爲什麼不縮放視圖保持放在我滾動它?

CGRect viewFrame = self.view.frame ; 
    viewFrame.size.width *= 1.5; 
    viewFrame.size.height *= 1.5; 
    CGSize mySize = viewFrame.size; 

    [ ((UIScrollView *) self.view) setContentSize: mySize]; 

    self.view.transform = CGAffineTransformMakeScale(1.5, 1.5); 

我真正想要實現類似的東西號碼iPad上(相同的代碼將在iPhone上運行):

  • 有有很多的控制 它(訂單輸入一個視圖表格)
  • 用戶可以放大整個表單,因此所有元素看起來都更大
  • 用戶可以平移表單,從而將各種元素放入屏幕的可見區域。

看來,UIScrollView中可應該能夠處理縮放和平移動作(我現在用的仿射變換放大到訂單輸入形式和iPad)

感謝

回答

3

當你轉換視圖,也可以轉換其內部座標系。這意味着如果縮放視圖,視圖仍然「認爲」它與縮放前的大小相同,因爲其座標單位也縮放。例如,如果您有一個尺寸爲(50,50)的圖像視圖並將其轉換爲覆蓋(200,200)在屏幕上,那麼當您詢問圖像視圖的大小時,它會報告它的大小仍然是(50,50)。

滾動視圖是不尋常的視圖類型,因爲它們已經瞭解了它們相對於物理設備屏幕的絕對大小以便正常工作。當你改變他們的座標系時,他們失去了與物理設備屏幕的連接,並且不能再正常工作。這就是你所看到的。

我還沒有做到這一點,但我很確定在scrollview中創建放大的幻想,您增加scrollview的框架,然後轉換其子視圖(或轉換子視圖,然後增加滾動視圖包含新的子視圖尺寸。)這是保持滾動視圖與物理設備屏幕同步的唯一方法。

+0

我完全忽略了座標系變化的事實!謝謝。我將查看滾動視圖內置設施進行平移和縮放 – leon 2010-04-19 01:50:21