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 = @"请\n竖\n直\n方\n向\n排\n列";
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;

 

posted @ 2015-11-19 19:18  刘冠  阅读(817)  评论(0编辑  收藏  举报