您的位置:首页 > 产品设计 > UI/UE

UIView层次关系管理

2014-11-11 17:56 281 查看
目的:想要统一UITextField的样式,大概效果如下:



统一变成这种样式:



方法:新建一个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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: