首页 > 技术文章 > IOS笔记4

liqiantu 2015-04-15 21:34 原文

1.文本size的计算方法

 

1  NSDictionary *dict = @{NSFontAttributeName: NJTextFont};
2     CGSize maxSize = CGSizeMake(200, MAXFLOAT);
3     CGSize textSize = [_message.text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size;
4 
5     CGSize maxSize = CGSizeMake(200, MAXFLOAT);
6     CGSize textSize = [self sizeWithString:_message.text font:NJTextFont maxSize:maxSize];

 

2.将button设置完整背景图片

1.设置button的内边距

2.在button文本size加上内边距

3.使用resizeableImage方法拉伸图片

1   加载原有图片
2     UIImage *norImage = [UIImage imageNamed:imageName];
3      获取原有图片的宽高的一半
4     CGFloat w = norImage.size.width * 0.5;
5     CGFloat h = norImage.size.height * 0.5;
6      生成可以拉伸指定位置的图片
7     UIImage *newImage = [norImage resizableImageWithCapInsets:UIEdgeInsetsMake(h, w, h, w) resizingMode:UIImageResizingModeStretch];

 

3.NSDate的用法

 1 // 实现把当前时间作为发送时间
 2     NSDate *date = [NSDate date]; // 创建时间对象
 3 //    NSLog(@"%@", date);
 4     // 可以将时间转换为字符串
 5     // 也可以将字符串转换为时间
 6     // 2014-05-31
 7     // 2014/05/31
 8     // 05/31/2014
 9     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
10     // HH 代表24小时 hh代表12小时
11     formatter.dateFormat = @"HH:mm";
12     NSString *time = [formatter stringFromDate:date];
13     
14     NSLog(@"time = %@", time);
15     message.time = time;

 

4.监听键盘通知设置键盘与view改变位置

1 [[NSNotificationCenter  defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification  object:nil];
 1 /*
 2      userInfo = {
 3       // 键盘弹出的节奏
 4      UIKeyboardAnimationCurveUserInfoKey = 7;
 5      //键盘弹出执行动画的时间
 6      UIKeyboardAnimationDurationUserInfoKey = "0.25";      UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 216}}";
 7      UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 588}";
 8      UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 372}";
 9      UIKeyboardFrameChangedByUserInteraction = 0;
10      UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 480}, {320, 216}}";
11      
12      // 键盘弹出时候的frame
13      UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 264}, {320, 216}}";
14      
15      // 键盘隐藏时候的frame
16      UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 480}, {320, 216}}";
17      }}
18 
19      */
20    NSLog(@"键盘弹出 %@", notification);
21     
22     /*
23     计算需要移动的距离
24      弹出的时候移动的值 = 键盘的Y值 – 控制view的高度 = 要移动的距离
25      -  480 = -216
26      
27      隐藏的时候移动的值 = 键盘的Y值 - 控制view的高度 = 要移动的距离
28      480 -  480 = 0
29     */

改变view位置时不需要加入动画,系统已经实现

 

5.将tableview滚动到最后一行

    // 2.刷新表格
    [self.tableView reloadData];
    
    // 3.让tableveiw滚动到最后一行
    NSIndexPath *path = [NSIndexPath indexPathForRow:self.messages.count -1 inSection:0];
    
    /*
     AtIndexPath: 要滚动到哪一行
     atScrollPosition:滚动到哪一行的什么位置
     animated:是否需要滚动动画
     */
    [self.tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionBottom animated:YES];

 6.几个新方法

 1 // 该方法在控件的frame被改变的时候就会调用
 2 // 该方法一般用于调整子控件的位置
 3 - (void)layoutSubviews
 4 {
 5 #warning 切记重写layoutSubviews方法一定要调用父类的layoutSubviews
 6     [super layoutSubviews];
 7 //    1.设置按钮的frame
 8     self.btn.frame = self.bounds;
 9 //    2.设置label的frame
10     CGFloat padding = 20;// 间隙
11     CGFloat labelY = 0;
12     CGFloat labelH = self.bounds.size.height;
13     CGFloat labelW = 150;
14     CGFloat labelX = self.bounds.size.width - padding - labelW;
15     self.label.frame = CGRectMake(labelX, labelY, labelW, labelH);
16 }

 

/ 已经被添加到父视图上的时候会调用
- (void)didMoveToSuperview
{
    // 在这个方法中就快要拿到最新的被添加到tableview上的头部视图修改它的图片
    if (self.qqGroup.isOpen) {
        self.btn.imageView.transform = CGAffineTransformMakeRotation(M_PI_2);
    }
}
// 即将被添加到父视图上的时候会调用
- (void)willMoveToSuperview:(UIView *)newSuperview
{
    // NSLog(@"willMoveToSuperview");
}

// 设置btn中的图片不填充整个imageview
        btn.imageView.contentMode = UIViewContentModeCenter;
        // 超出范围的图片不要剪切
//        btn.imageView.clipsToBounds = NO;
        btn.imageView.layer.masksToBounds = NO;

 

推荐阅读