我想搬到另一个之上一个观点,我怎么能知道视图的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