zoukankan      html  css  js  c++  java
  • iOS-UI控件之UIImageView

    contentMode属性

    • 带有scale单词的:图片有可能会拉伸

      • UIViewContentModeScaleToFill
        • 将图片拉伸至填充整个imageView
        • 图片显示的尺寸跟imageView的尺寸是一样的
      • 带有aspect单词的:保持图片原来的宽高比
        • UIViewContentModeScaleAspectFit
          • 保证刚好能看到图片的全部
        • UIViewContentModeScaleAspectFill
          • 拉伸至图片的宽度或者高度跟imageView一样
    • 没有scale单词的:图片绝对不会被拉伸,保持图片的原尺寸

      • UIViewContentModeCenter
      • UIViewContentModeTop
      • UIViewContentModeBottom
      • UIViewContentModeLeft
      • UIViewContentModeRight
      • UIViewContentModeTopLeft
      • UIViewContentModeTopRight
      • UIViewContentModeBottomLeft
      • UIViewContentModeBottomRight

    小语法点

    • 不能直接修改:OC对象的结构体属性的成员
    • 下面的写法是错误的
    imageView.frame.size = imageView.image.size;
    
    • 正确写法
    CGRect tempFrame = imageView.frame;
    tempFrame.size = imageView.image.size;
    imageView.frame = tempFrame;
    

    initWithImage:方法

    • 利用这个方法创建出来的imageView的尺寸和传入的图片尺寸一样

    修改frame的3种方式

    • 直接使用CGRectMake函数
    imageView.frame = CGRectMake(100, 100, 200, 200);
    
    • 利用临时结构体变量
    CGRect tempFrame = imageView.frame;
    tempFrame.origin.x = 100;
    tempFrame.origin.y = 100;
    tempFrame.size.width = 200;
    tempFrame.size.height = 200;
    imageView.frame = tempFrame;
    
    • 使用大括号{}形式
    imageView.frame = (CGRect){{100, 100}, {200, 200}};
    
    • 抽取重复代码

      • 将相同代码放到一个新的方法中
      • 不用的东西就变成方法的参数
    • 图片的加载方式

      • 有缓存
        UIImage *image = [UIImage imageNamed:@"图片名"];
        
        • 使用场合:图片比较小、使用频率较高
        • 建议把需要缓存的图片直接放到Images.xcassets
      • 无缓存
        NSString *file = [[NSBundle mainBundle] pathForResource:@"图片名" ofType:@"图片的扩展名"];
        UIImage *image = [UIImage imageWithContentsOfFile:@"图片文件的全路径"];
        
        • 使用场合:图片比较大、使用频率较小
        • 不需要缓存的图片不能放在Images.xcassets
        • 当放在Supporting Files中,导入时选择Create folder references时候,加载文件需要导入文件名‘/images/imag_01’
      • 放在Images.xcassets里面的图片,只能通过图片名去加载图片
    • 延迟做一些事情

    [abc performSelector:@selector(stand:) withObject:@"123" afterDelay:10];
    // 10s后自动调用abc的stand:方法,并且传递@"123"参数
    
    • 音频文件的简单播放
    // 创建一个音频文件的URL(URL就是文件路径对象)
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"音频文件名" withExtension:@"音频文件的扩展名"];
    // 创建播放器
    self.player = [AVPlayer playerWithURL:url];
    // 播放
    [self.player play];
  • 相关阅读:
    Java多线程系列--“JUC集合”08之 LinkedBlockingQueue
    Java多线程系列--“JUC集合”07之 ArrayBlockingQueue
    Java多线程系列--“JUC集合”06之 ConcurrentSkipListSet
    Java多线程系列--“JUC集合”05之 ConcurrentSkipListMap
    Java多线程系列--“JUC集合”04之 ConcurrentHashMap
    Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet
    Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
    Java多线程系列--“JUC集合”01之 框架
    Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
    Java多线程系列--“JUC锁”10之 CyclicBarrier原理和示例
  • 原文地址:https://www.cnblogs.com/ShaoYinling/p/4584484.html
Copyright © 2011-2022 走看看