iOS开发百宝箱---那些年我们忽略过得细节(持续更新)

1.UILabel

  • 文字截取显示模式

@property(nonatomic)        NSLineBreakMode    lineBreakMode;   // default is NSLineBreakByTruncatingTail. used for single and multiple lines of text
NSLineBreakMode 显示样式
NSLineBreakByWordWrapping 单词包裹,以单词为单位显示,后面的部分省略不显示;换行时以一个单词换行
NSLineBreakByCharWrapping 字符包裹,以字符为单位显示,后面的部分省略不显示;换行时以一个字符换行
NSLineBreakByClipping 裁剪超出部分的内容
NSLineBreakByTruncatingHead 头部文字以……方式省略,显示尾部文字内容
NSLineBreakByTruncatingTail 尾部文字以……方式省略,显示头部文字内容
NSLineBreakByTruncatingMiddle 中间文字以……方式省略,显示头部、尾部文字内容

2.UIImageView

  • 1.图片填充方式的设置

@property(nonatomic)                 UIViewContentMode contentMode;                // default is UIViewContentModeScaleToFill
UIViewContentMode 填充模式
UIViewContentModeScaleToFill 默认,将图片按照imageView区域进行拉伸,经常会导致图片变形
UIViewContentModeScaleAspectFill 图片宽高比不变,等比例拉伸,填充整个imageView区域,可能会导致部分图像超出区域而不显示
UIViewContentModeScaleAspectFit 图片宽高比不变,全部显示在imageView区域中,可能会导致imageView存在空白区域
UIViewContentModeCenter 图片中间部分显示在imageView区域中
UIViewContentModeTop 图片顶部部分显示在imageView区域中
UIViewContentModeBottom 图片底部部分显示在imageView区域中
UIViewContentModeLeft 图片左侧部分显示在imageView区域中
UIViewContentModeRight 图片右侧部分显示在imageView区域中
UIViewContentModeTopLeft 图片左上部分显示在imageView区域中
UIViewContentModeTopRight 图片右上部分显示在imageView区域中
UIViewContentModeBottomLeft 图片左下部分显示在imageView区域中
UIViewContentModeBottomRight 图片右下部分显示在imageView区域中
UIViewContentModeRedraw 重新绘制
  • 注意
  • 带有Scale,标明图片有可能被拉伸或压缩
  • Aspect比例,图片的缩放是按照比例的
  1. 不带有Scale,标明图片不可能被拉伸或压缩,当图片尺寸超出imageView尺寸时,只有部分图片会显示出来
  • 使用该属性的时候通常要与clipsToBounds属性一起使用,否则可能会导致界面布局混乱(超出部分的图片覆盖其他控件)
示例图片
  • 2.忽略了的imageView设置frame方式

    • 通过frame的方式设置
    • 设置图片,通过图片自身的frame来进行设置(此种方式容易忽略
 //方式一:最常规的设置方式
   UIImageView * imageView = [[UIImageView alloc]init];
   imageView.frame = CGRectMake(10, 10, 100, 100);
   
     //方式二:根据图片的大小进行设置
   
   UIImageView *imageView = [[UIImageView alloc] init];
   UIImage *image = [UIImage imageNamed:@"1"];
   imageView.frame = CGRectMake(100, 100, image.size.width, image.size.height);
   imageView.image = image;
   
  //方式三:初始化时默认设置 initWithImage:控件的尺寸===图片的尺寸
   
   // 创建一个UIimageview对象
   // 注意: initWithImage 默认就有尺寸--->图片的尺寸
   UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]];
   
   // 通过改变center,改变位置
   imageView.center = CGPointMake(200, 150);
  • 3.通过文件名加载项目中图片资源的两种方式

+ (nullable UIImage *)imageNamed:(NSString *)name; 

+ (nullable UIImage *)imageWithContentsOfFile:(NSString *)path;

我们在项目中加载图片通常会有两种方式

  • 将图片放到项目的Assets.xcassets中

  • 将图片直接拖到项目中(项目的某一个文件夹中)

  • ** 注意 **

  • Assets.xcassets打包之后会变成Assets.car,我们拿不到内部图片的路径,因此只能通过imageNamed:来加载图片,不能通过imageWithContentsOfFile:来加载图片

  • 直接拖到项目中的图片可以拿到路径,能通过imageNamed:来加载图片,也能通过imageWithContentsOfFile:来加载图片

  • 4.UIImageView简单毛玻璃效果的实现

  • 4.1.UIToolBar
我们利用UIToolBar这个类可以简单粗暴的设置毛玻璃的效果
 //1.创建UIImageView
    UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 100, 260, 260)];
    imageView.image = [UIImage imageNamed:@"IMG_20160319_164125"];
    [self.view addSubview:imageView];
    
    //2.创建UIToolbar
    UIToolbar * toolBar = [[UIToolbar alloc]initWithFrame:imageView.frame];
    
    //3.设置UIToolbar的样式
    toolBar.barStyle = UIBarStyleBlack;
    
    //4.调整UIToolbar的透明度来达到想要的效果
    toolBar.alpha = 0.9;
    
    //5.将UIToolbar覆盖(添加)到UIImageView上面
    [self.view addSubview:toolBar];
  • 4.2UIVisualEffectView
UIVisualEffectView是iOS8引入的创建毛玻璃(blur)的接口。
 UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 100, 260, 260)];
    imageView.image = [UIImage imageNamed:@"IMG_20160319_164125"];
    [self.view addSubview:imageView];
    
    
    UIBlurEffect * blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
    
    UIVisualEffectView * effectView = [[UIVisualEffectView alloc]initWithEffect:blur];
    effectView.frame = imageView.bounds;
    
    [imageView addSubview:effectView];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容