我想搬到另一個之上一個觀點,我怎麼能知道視圖的Z指數,以及如何將移動到頂部?如何設置iPhone UIView z索引?
回答
UIView
兄弟姐妹被堆疊在它們被添加到其上海華的順序。該UIView
層次的方法和屬性是有管理的視角次序。在UIView.h:
@property(nonatomic,readonly) UIView *superview;
@property(nonatomic,readonly,copy) NSArray *subviews;
- (void)removeFromSuperview;
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;
- (void)addSubview:(UIView *)view;
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;
- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;
同級視圖排序回到subviews
陣列在前面。所以,最上面的觀點是:
[parentView.subviews lastObject];
和底部的觀點是:
[parentView.subviews objectAtIndex:0];
像歌林Krewinkel說,[parentView bringSubviewToFront:view]
將帶來視圖頂部,但這隻有在意見的情況都是層次結構中的所有兄弟姐妹。
您可以使用視圖圖層的zPosition
屬性(它是一個CALayer
對象)來更改視圖的z索引。
theView.layer.zPosition = 1;
由於Viktor Nordling補充說,「大的值是在上面。你可以使用任何你想要的價值,包括負值。」默認值爲0。
您需要導入QuartzCore框架訪問層。只需將這行代碼添加到實現文件的頂部即可。
#import "QuartzCore/QuartzCore.h"
[parentView bringSubviewToFront:view] ;
如果你想通過Xcode的界面生成器要做到這一點,你可以用下編輯 - >排列的菜單選項。你會發現「Send to Front」,「Send to Back」等等。
如果你使用的是cocos2d,你可能會發現[parentView bringSubviewToFront:view]有問題,至少它不適合我。我沒有把我想要的觀點帶到前面,而是把其他觀點發回來,並且做到了這一點。
[[[CCDirector sharedDirector] view] sendSubviewToBack:((UIButton *) button)];
IB和斯威夫特
鑑於流動佈局,其中黃色的是上海華和紅,綠,藍是兄弟的黃子視圖,
的目標是將子視圖(讓我們說綠色)移動到頂部。
在Interface Builder
在Interface Builder中所有你需要做的是拖動要顯示在頂部在文檔大綱列表底部的視圖。
或者,您也可以選擇視圖,然後在菜單中去編輯>排列>發送到前。
在斯威夫特
有幾種不同的方法以編程方式做到這一點。
方法1
yellowView.bringSubviewToFront(greenView)
- 此方法是上述的IB答案的方案等效。
- 它只適用於子視圖是彼此的兄弟姐妹。
子視圖的數組包含在
yellowView.subviews
中。這裏,bringSubviewToFront
將greenView
從索引0
移動到2
。這可以用print(yellowView.subviews.indexOf(greenView))
方法2
greenView.layer.zPosition = 1
- 此方法只是移動層的3D位置可以觀察到更高的z軸(更靠近用戶) 。由於所有其他視圖的默認值爲
0
,因此結果爲greenView
看起來好像在頂部。但是,它仍然位於yellowView.subviews
陣列的索引0
處。但是,這可能會導致一些意想不到的結果,因爲像tap事件這樣的事件仍將首先進入索引號最高的視圖。出於這個原因,使用上面的方法1可能會更好。 zPosition
可以設置爲CGFloat.greatestFiniteMagnitude
(CGFloat(FLT_MAX)
在老版本的Swift中)以確保它在最前面。
在你想帶頂端的觀點... (斯威夫特)
superview?.bringSubviewToFront(self)
我想調整故事板UI界面UI。我用tag
來表示那些視圖的z-Index
。
在SWIFT 3
// Connect to those views, who need to adjust their z position.
@IBOutlet var viewSetZIndex: [UIView]!
// In `viewDidLoad`, or `awakeFromNib`
for v in viewSetZIndex {
// Use `tag` to adjust `zPosition`
v.layer.zPosition = CGFloat(v.tag)
}
- 1. 如何設置css z索引作爲其父z索引
- 2. UIPickerView的設置索引iPhone
- 3. 如何使用一些整數值設置z索引
- 4. 如何使用WPF DrawingContext設置Z索引?
- 5. jQuery和Z索引重置
- 6. 如何設置UIView的原點引用?
- 7. MongoDB。如何設置索引?
- 8. IE7和z-索引
- 9. iPhone的tableView索引位置/設定
- 10. Z-索引在IE
- 11. 指定Z-索引
- 12. A-Z索引Django
- 13. 單張z索引
- 14. CSS動畫和Z索引
- 15. Z索引顯示問題
- 16. 設置索引
- 17. 設置索引
- 18. 的UIButton的UIImage需要設置層順序z順序和z索引
- 19. z-索引和位置屬性間距
- 20. GWT:MenuBar子菜單位置/ Z索引
- 21. CSS位置絕對Z索引問題
- 22. z索引和定位
- 23. IE8,XHTML,position:fixed;和z-索引
- 24. 如何表徵DOM的z索引? (2)
- 25. Z索引問題
- 26. 如何在Android中將視圖的z索引設置爲片段前面?
- 27. Openlayers 2.12選擇z索引設置時的特徵
- 28. Javascript:在多個元素(ID和類)上設置Z索引
- 29. 無法在靜態成員上設置Z索引
- 30. 爲什麼當z索引被設置時div會移動?
正如一個幫手,大值是 「上面」。你可以使用任何你想要的值,包括負值。 – 2012-06-09 13:08:43
如果您希望您的視圖始終處於最佳狀態,則此解決方案更好。 只需將zPosition設置爲MAXFLOAT – 2012-11-22 17:42:10