zoukankan      html  css  js  c++  java
  • UI学习之常用方法(续)

    UIView

    1.    UIView *vv = [[UIView alloc]initWithFrame:CGRectMake(100,100, 100, 30)];

        [vv.layer setBorderWidth:2];

        vv.backgroundColor = [UIColor redColor];

        [vv.layer setBorderColor:[UIColor orangeColor].CGColor];

        [self.view addSubview:vv];

    2.删除父视图上的子视图

    @1 for(id obj in bottom.subviews)

       {

           [obj removeFromSuperview];//遍历删除子视图

       }

    @2[view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

    3.旋转圈

        UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];//指定进度轮的大小

        [activity setCenter:CGPointMake(190, 330)];//指定进度轮中心点

        activity.tag = 3;

        activity.backgroundColor = [UIColor redColor];

        [activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];//设置进度轮显示类型

        activity.layer.masksToBounds = YES;

        [activity startAnimating];

        [self.view addSubview:activity];

    UINavigationController

        UIButton *myButton = [UIButton buttonWithType:UIButtonTypeSystem];
        //[UIButton buttonWithType:UIButtonTypeCustom];//显示真实图标颜色
        myButton.frame = CGRectMake(0, 0, 30, 30);
    //    myButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"home"]];
        [myButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];//建议使用方式
    //    [myButton setTitle:@"返回" forState: UIControlStateNormal] ;
        UIBarButtonItem *backButton = [[UIBarButtonItem alloc]initWithCustomView:myButton];
        UIButton *myButton1 = [UIButton buttonWithType:UIButtonTypeSystem];
        myButton1.frame = CGRectMake(0, 0, 30, 30);
        //    myButton.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"login"]];//无点击效果,保留色彩
        [myButton1 setImage:[UIImage imageNamed:@"home"] forState:UIControlStateNormal];//建议使用方式
        //    [myButton setTitle:@"返回" forState: UIControlStateNormal] ;
        UIBarButtonItem *backButton1 = [[UIBarButtonItem alloc]initWithCustomView:myButton1];
        self.navigationItem.leftBarButtonItem = backButton;
        self.navigationItem.rightBarButtonItem = backButton1; 

    设置UIImage的渲染模式:UIImage.renderingMode

    着色(Tint Color)是iOS7界面中的一个.设置UIImage的渲染模式:UIImage.renderingMode重大改变,你可以设置一个UIImage在渲染时是否使用当前视图的Tint Color。UIImage新增了一个只读属性:renderingMode,对应的还有一个新增方法:imageWithRenderingMode:,它使用UIImageRenderingMode枚举值来设置图片的renderingMode属性。该枚举中包含下列值:

    1. UIImageRenderingModeAutomatic  // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。  
    2. UIImageRenderingModeAlwaysOriginal   // 始终绘制图片原始状态,不使用Tint Color。  
    3. UIImageRenderingModeAlwaysTemplate   // 始终根据Tint Color绘制图片,忽略图片的颜色信息。

    ios中颜色渐变效果

        CAGradientLayer *gradient = [CAGradientLayer layer];

        gradient.frame = self.view.bounds;

        gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor redColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil,nil];

        [self.view.layer insertSublayer:gradient atIndex:0];

     //查找一个父视图上的子视图类型

    //便利所有的子视图
    for (id view in self.view.subviews) {
    //判断子视图是否是tableview
    if ([view isKindOfClass:[UITableView class]]) {
    //如果是tableview,就reload
    [view reloadData];
    }
    }

    typeof

    __weak __typeof(self)weakSelf = self;//声明了一个self类型的 weak指针 weakSelf
    /*
    typeof(self) 是获取到self的类型,这样定义出的weakSelf就是和self一个类型的, 加上__weak是建立一个弱引用,整句就是给self定义了一个若引用性质的替身;
    这个一般用在使用block时会用到,因为block会copy它内部的变量,可能会造成引用循环,使用__weak性质的self替代self,可以切断block对self的引用,避免循环引用
    */

    自定义代理设计时,代理方法调用时,应该判断有无此方法

    if (self.delegate && [self.delegate respondsToSelector:@selector(sliderValueChanged:/*一个自定义方法*/)]) {
    [self.delegate sliderValueChanged:self];
    }

    UILable实现自适应高度

     1 - (void)initUserInterface
     2 {
     3     UILabel *label = [[UILabel alloc]init];
     4     label.numberOfLines = 0; // 需要把显示行数设置成无限制
     5     label.font = [UIFont systemFontOfSize:15];
     6     label.textAlignment = NSTextAlignmentCenter;
     7     label.text = @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
     8     CGSize size =  [self sizeWithString:label.text font:label.font];
     9     label.bounds = CGRectMake(0, 0, size.width, size.height);
    10     label.center = self.view.center;
    11     [self.view addSubview:label];
    12      
    13 }
    14 // 定义成方法方便多个label调用 增加代码的复用性
    15 - (CGSize)sizeWithString:(NSString *)string font:(UIFont *)font
    16 {
    17     CGRect rect = [string boundingRectWithSize:CGSizeMake(320, 8000)//限制最大的宽度和高度
    18                                        options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading  |NSStringDrawingUsesLineFragmentOrigin//采用换行模式
    19                                     attributes:@{NSFontAttributeName: font}//传人的字体字典
    20                                        context:nil];
    21      
    22     return rect.size;
    23 }

     TableView行高自适应

     1 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
     2 {
     3     // 行宽
     4     CGFloat contentWidth = self.view.frame.size.width;
     5     // 字体
     6     UIFont *font = [UIFont systemFontOfSize:30];
     7     // 计算出显示完內容需要的最小尺寸
     8     CGRect rect = [string boundingRectWithSize:CGSizeMake(contentWidth, 1000.0f) //限制最大的宽度和高度
     9                                        options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading  |NSStringDrawingUsesLineFragmentOrigin//采用换行模式
    10                                     attributes:@{NSFontAttributeName: font}//传人的字体字典
    11                                        context:nil];
    12     // 返回组要的高度
    13     return rect.size.height+20;
    14 }
    15 - (void)didReceiveMemoryWarning {
    16     [super didReceiveMemoryWarning];
    17     // Dispose of any resources that can be recreated.
    18 }
    19 - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    20 {
    21     static NSString * CellIdentifier = @"Cell";
    22     UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    23     if (cell == nil) {
    24         // 实例化单元格对象
    25         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    26         // 设置显示文字
    27         cell.textLabel.text = string;
    28         // 设置自动换行
    29         cell.textLabel.numberOfLines = 0;
    30         // 字体与计算字符显示框架大小那边的要一致
    31         cell.textLabel.font =  [UIFont systemFontOfSize:30];
    32     }
     1 如何让tableView中cell的线左端顶头?
     2 第一步,创建完tableView之后加上一下代码
     3     if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0){
     4         if ([listTableView respondsToSelector:@selector(setSeparatorInset:)]) {
     5 
     6             [listTableView setSeparatorInset:UIEdgeInsetsZero];
     7 
     8         }
     9 
    10         if ([listTableView respondsToSelector:@selector(setLayoutMargins:)]) {
    11 
    12             [listTableView setLayoutMargins:UIEdgeInsetsZero];
    13         }
    14     }else{
    15         [listTableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
    16 
    17     }
    18 然后添加一个代理方法,
    19 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    20 
    21 {
    22             if ([[UIDevice currentDevice].systemVersion floatValue] > 7.9){
    23             if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
    24 
    25                 [cell setSeparatorInset:UIEdgeInsetsZero];
    26 
    27             }
    28 
    29             if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    30 
    31                 [cell setLayoutMargins:UIEdgeInsetsZero];
    32 
    33             }
    34 
    35         }
    36 
    37 }

     //设置导航条字体的颜色;   self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor]/*值*/, NSForegroundColorAttributeName/*键*/, nil];

    ·UILable是iPhone界面最基本的控件,主要用来显示文本信息。
    ·常用属性和方法有:
    1、创建
    CGRect rect = CGRectMake(100, 200, 50, 50);
    UILabel *label = [[UILabel alloc] initWithFrame:rect];
    2、text //设置和读取文本内容,默认为nil
    label.text = @”文本信息”; //设置内容
    NSLog(@”%@”, label.text); //读取内容
    3、textColor //设置文字颜色,默认为黑色
    lable.textColor = [UIColor redColor];
    4、font //设置字体大小,默认17
    label.font = [UIFont systemFontOfSize:20]; //⼀一般方法
    label.font = [UIFont boldSystemFontOfSize:20]; //加粗方法
    label.font = [UIFont fontWithName:@"Arial" size:16]; //指定
    字体的方法
    //还有⼀一种从外部导入字体的方法。
    5、textAlignment //设置标签文本对齐方式。
    label.textAlignment = NSTextAlignmentCenter; //还有
    NSTextAlignmentLeft、 NSTextAlignmentRight.
    6、numberOfLines //标签最多显示行数,如果为0则表示多行。
    label.numberOfLines = 2;
    7、enabled //只是决定了Label的绘制方式,将它设置
    为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的。
    label.enable = NO;
    8、highlighted //是否高亮显示
    label.highlighted = YES;
    label.highlightedTextColor = [UIColor orangeColor]; //高亮
    显示时的文本颜色
    9、ShadowColor //设置阴影颜色 
    [label setShadowColor:[UIColor blackColor]];
    10、ShadowOffset //设置阴影偏移量
    [label setShadowOffset:CGSizeMake(-1, -1)];
    11、baselineAdjustment //如果adjustsFontSizeToFitWidth属性设
    置为YES,这个属性就来控制文本基线的行为。
    label.baselineAdjustment = UIBaselineAdjustmentNone;
    UIBaselineAdjustmentAlignBaselines = 0,默认,文本最上端与中线对齐。
    UIBaselineAdjustmentAlignCenters,  文本中线与label中线对齐。
    UIBaselineAdjustmentNone, 文本最低端与label中线对齐。
    12、Autoshrink //是否自动收缩
    Fixed Font Size 默认,如果Label宽度小于文字长度时时,文字大小不自动缩放
    minimumScaleFactor 设置最小收缩比例,如果Label宽度小于文字长度时,文字
    进行收缩,收缩超过比例后,停止收缩。
    minimumFontSize 设置最小收缩字号,如果Label宽度小于文字长度时,文字字号
    减小,低于设定字号后,不再减小。//6.0以后不再使用了。
    label.minimumScaleFactor = 0.5;
    13、adjustsLetterSpacingToFitWidth //改变字母之间的间距来适应Label大小
    myLabel.adjustsLetterSpacingToFitWidth = NO;
    14、 lineBreakMode //设置文字过长时的显示格式             
    label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显
    示,后面部分省略不显示。
    label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内
    容长度,后半部分被删除。
    label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字
    以……方式省略,显示尾部文字内容。
    label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容
    以……方式省略,显示头尾的文字内容。
    label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容
    以……方式省略,显示头的文字内容。
    label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显
    示,后面部分省略不显示。
    15、 adjustsFontSizeToFitWidth //设置字体大小适应label宽度  
    label.adjustsFontSizeToFitWidth = YES;
    16、attributedText:设置标签属性文本。
    NSString *text = @"first";
    NSMutableAttributedString *textLabelStr =
    [[NSMutableAttributedString alloc]
    initWithString:text];
    [textLabelStr
    setAttributes:@{NSForegroundColorAttributeName :
    [UIColor lightGrayColor], NSFontAttributeName :
    [UIFont systemFontOfSize:17]} range:NSMakeRange(11,
    10)];
    label.attributedText = textLabelStr;
    17、竖排文字显示每个文字加一个换行符,这是最方便和简单的实现方式。
    label.text = @"请 竖 直 方 向 排 列";
    label.numberOfLines = [label.text length];


    18、计算UIlabel 随字体多行后的高度
    CGRect bounds = CGRectMake(0, 0, 200, 300);
    heightLabel = [myLabel textRectForBounds:bounds
    limitedToNumberOfLines:20]; //计算20行后的Label的Frame
    NSLog(@"%f",heightLabel.size.height);
    19、UILabel根据字数多少自动实现适应高度
    UILabel *msgLabel = [[UILabel alloc]
    initWithFrame:CGRectMake(15, 45, 0, 0)];
    msgLabel.backgroundColor = [UIColor lightTextColor];
    [msgLabel setNumberOfLines:0];
    msgLabel.lineBreakMode = UILineBreakModeWordWrap;
    msgLabel.font = [UIFont fontWithName:@"Arial" size:12];
    CGSize size = CGSizeMake(290, 1000);
    msgLabel.text = @"获取到的deviceToken,我们可以通过webservice服务提
    交给.net应用程序,这里我简单处理,直接打印出来,拷贝到.net应用环境中使
    用。";
    CGSize msgSie = [msgLabel.text sizeWithFont:fonts
    constrainedToSize:size];
    [msgLabel setFrame:CGRectMake(15, 45, 290, msgSie.height)];


    20、渐变字体Label
    UIColor *titleColor = [UIColor colorWithPatternImage:[UIImage
    imageNamed:@"btn.png"]];
    NSString *title = @"Setting";
    UILabel *titleLabel = [[UILabel alloc]
    initWithFrame:CGRectMake(0, 0, 80, 44)];
    titleLabel.textColor = titleColor;
    titleLabel.text = title;
    titleLabel.font = [UIFont boldSystemFontOfSize:20];
    titleLabel.backgroundColor = [UIColor clearColor];
    [self.view addSubview:titleLabel];
    [titleLabel release];
    21、Label添加边框
    titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];
    titleLabel.layer.borderWidth = 2;

  • 相关阅读:
    Spring MVC笔记(二) Hello World实例
    Spring MVC笔记(一) Spring MVC概述
    正则表达式在python中的应用
    Spring与Ibatis整合入门
    Spark GraphX的函数源码分析及应用实例
    Python爬虫获取迅雷会员帐号
    Linux Shell编程学习笔记
    Hadoop在linux下无法启动DataNode解决方法
    Ubuntu中使用终端运行Hadoop程序
    Hadoop2.6.0在Ubuntu Kylin14.04上的配置
  • 原文地址:https://www.cnblogs.com/liuguan/p/4978828.html
Copyright © 2011-2022 走看看