2013-04-23 65 views
0

應用程序需要多個窗口(允許調用A,B,C)。每個窗口都有多個視圖(表格視圖,圖像視圖以及Web視圖)。假設窗口A有三個視圖(x,y,z),窗口B有三個視圖(d,e,f)。應用程序需要在方向更改時顯示不同大小的圖像。如何替換視圖

我已經實現了相同的使用手勢事件監聽器和循環瀏覽窗口的視圖和替換視圖與新的圖像。我遇到的問題是當我們從一個窗口導航到另一個窗口並且方向改變時,循環後的視圖加載進行折騰。有沒有更好的方法來實現相同?

有沒有像鈦代替以下代碼的方法?

var self=Ti.UI.currentWindow 
var newView=Ti.UI.createImageView({image:'abc.png'}) 
self.replace(self.children[1],newView) 

回答

1

不幸的是現在replace方法。

您需要刪除整個視圖並再次添加,但如果您在同一級別上有多個視圖,則可能會導致佈局錯誤。然後實施取決於設置的佈局(vertical,horizontalcomposite等)。

例如在vertical佈局中刪除一個項目,只需添加一個新項目就會刪除您指定的項目,但會在最後追加新項目,因爲您無法指定應該添加的順序。

如果你有composite佈局,可以指定絕對位置,但增加一個新的觀點導致了這一觀點,這樣它會隱藏先前在相同/相似的位置,增加景觀的高zIndex

+0

+1這將有助於這個問題的上下文 – 2013-04-23 14:31:51

0

爲什麼不簡單地更改圖片鏈接?

var self = Ti.UI.currentWindow; 
self.children[1].image = 'bcd.png'; 
+0

我覺得他已經試過這個? – 2013-04-23 14:32:43

+0

我希望...但這是工作,爲什麼要替換整個視圖? – RelevantUsername 2013-04-23 14:48:15

0

Well you could always lock the orientation of your window。但這不是很好的做法(特別是iOS)。

總體方向變化處理得很好,如果你定義您的看法widthheight是百分比或Ti.UI.FILL,如果你有一個composite佈局。檢查你沒有給出視圖的絕對座標,因爲這可能cause layout problems.如果你有一個垂直或水平的佈局,你通常不必擔心方向改變,除非你沒有正確地將你的視圖嵌套在主容器中。

0

普拉薩德

如果這是關於剛剛確保圖像看起來在不同的方向很好,你可以使用由鈦在android /圖像提供的不同文件夾的folder.You可以很快讓不同的圖像每個方向和設備的大小。對於IOS,您可以只改變方向變化的圖像,因爲你已經在做。

https://wiki.appcelerator.org/display/guides/Using+density-specific+resources+on+Android

如果您concernced有關佈局有兩件事情可以做:在percentages.This

確定公司運作的所有高度或寬度值方式,所有的元素將被重新調整一次方向自動改變。

2。在每個窗口中,默認檢查方向是垂直還是水平,並相應地設置imageView的圖像屬性。

Ti.UI.orientation 

此屬性會給你的窗口的方向通過該屬性的default.Values可能是這個

Ti.UI.PORTRAIT

Ti.UI.UPSIDE_PORTRAIT

鈦.UI.LANDSCAPE_LEFT

Ti.UI.LANDSCAPE_RIGHT

使用「if else」並相應地設置圖像。