IOS笔记4

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;

 

你可能感兴趣的:(ios)