• 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;
  • 相关阅读:
    pip 查看软件包 可用版本并安装; pip 查看 numpy 可用版本并安装
    git submodule git 子模块管理相关操作
    git 取消文件跟踪
    C 实战练习题目1
    VC6.0设置注释快捷键
    2019-11-29-WPF-非客户区的触摸和鼠标点击响应
    2019-11-29-VisualStudio-使用新项目格式快速打出-Nuget-包
    2019-11-29-WPF-从触摸消息转触摸事件
    2019-11-29-win7-无法启动-WPF-程序-D3Dcompiler_47.dll-丢失
    2019-11-29-C#-序列类为-xml-可以使用的特性大全
  • 原文地址:https://www.cnblogs.com/liqiantu/p/4430284.html
Copyright © 2020-2023  润新知