UIView层次关系管理
2014-11-11 17:56
281 查看
目的:想要统一UITextField的样式,大概效果如下:
统一变成这种样式:
方法:新建一个TTSView类,继承UIView类,在- (void)drawRect:(CGRect)rect 中添加自己想要的样式,使用的时候直接将UIView的类型改为TTSView就好了,比较方便,省得每次都要去敲代码,麻烦!
过程代码:
(1)
(2)设置UIView的类为TTSUIView,搞定,so easy~
附注:
将一个UIView显示在最前面只需要调用其父视图的 bringSubviewToFront()方法。
将一个UIView层推送到背后只需要调用其父视图的 sendSubviewToBack()方法。
交换两个图层 [UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
取得index
NSInteger index = [[UIView subviews] indexOfObject:Subview名称];
替 Subview 加上 NSInteger 的註记 (Tag),好让之后它们分辨彼此。[Subview setTag:NSInteger];
注意addSubview
和 insertSubview 的区别。
移除所有subView
for(UIView
*view in [self.view subviews]){
[view removefromsuperview]
}
资源图片:image-textinput.png
统一变成这种样式:
方法:新建一个TTSView类,继承UIView类,在- (void)drawRect:(CGRect)rect 中添加自己想要的样式,使用的时候直接将UIView的类型改为TTSView就好了,比较方便,省得每次都要去敲代码,麻烦!
过程代码:
(1)
- (void)drawRect:(CGRect)rect { // Drawing code CGRect r = CGRectMake(rect.origin.x - 2, rect.origin.y - 2, rect.size.width + 4, rect.size.height + 4); UIImageView *imgaeView = [[UIImageView alloc] initWithFrame:r]; imgaeView.image = [[UIImage imageNamed:@"image-textinput.png"] stretchableImageWithLeftCapWidth:7 topCapHeight:7]; [self addSubview:imgaeView]; [self sendSubviewToBack:imgaeView]; for (id subView in [self subviews]) { if ([subView isKindOfClass:[UILabel class]]) { UILabel *label = (UILabel*)subView; label.backgroundColor = [UIColor clearColor]; label.textAlignment = NSTextAlignmentLeft; label.font = [UIFont systemFontOfSize:FONT_SIZE_INPUT_LABEL_TEXT]; label.textColor = [UIColor colorWithHex:COLOR_DARK_GRAY]; label.adjustsFontSizeToFitWidth = YES; } if ([subView isKindOfClass:[UITextField class]]) { UITextField *textField = (UITextField*)subView; textField.borderStyle = UITextBorderStyleNone; textField.adjustsFontSizeToFitWidth = YES; textField.font = [UIFont systemFontOfSize:FONT_SIZE_INPUT_VALUE_TEXT]; textField.textColor = [UIColor colorWithHex:COLOR_DARK_GRAY]; textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; textField.returnKeyType = UIReturnKeyDone; textField.clearButtonMode = UITextFieldViewModeWhileEditing; } } }
(2)设置UIView的类为TTSUIView,搞定,so easy~
附注:
将一个UIView显示在最前面只需要调用其父视图的 bringSubviewToFront()方法。
将一个UIView层推送到背后只需要调用其父视图的 sendSubviewToBack()方法。
交换两个图层 [UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
取得index
NSInteger index = [[UIView subviews] indexOfObject:Subview名称];
替 Subview 加上 NSInteger 的註记 (Tag),好让之后它们分辨彼此。[Subview setTag:NSInteger];
注意addSubview
和 insertSubview 的区别。
移除所有subView
for(UIView
*view in [self.view subviews]){
[view removefromsuperview]
}
资源图片:image-textinput.png
相关文章推荐
- UI06-UIView视图层次关系
- 打印UIView视图层次关系(转)
- UIView层次管理
- UIView层次管理和视图切换
- ios 查看UIView的层次继承关系工具
- UIView层次管理(放到最上层或放到最下层)
- UIView层次管理(sendSubviewToBack,bringSubviewToFront)
- ios 查看UIView的层次继承关系工具
- UIView的层次关系
- UIView层次管理 放到最上层 放到最下层
- UIView层次管理,按钮切换
- UIView的层次管理()
- UIday01: UIView及其子类 UIView UILabel frame center bounds 管理视图层次 控制文本显示
- Xcode9学习笔记4 - UIView视图的层次关系
- iPhone SDK开发基础之使用UITabBarController组织和管理UIView
- 游戏运营技术之---玩家关系管理(PRM)--〉推进虚拟营销
- UIView 的图层关系
- iphone--UIViewController与UIView的关系
- 虚拟地址空间管理之mmap系统调用关系图
- Windows 窗口层次关系