实践-小细节 II

1.如何让按钮文本左对齐

button.titleLabel.textAlignment = NSTextAlignmentLeft; 这行代码是没有效果的,这只是让标签中的文本左对齐,但 并没有改变标签在按钮中的对齐方式。

所以,我们首先要使用 button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 这行代码,把按钮的内容(控件) 的对齐方式修改为水平左对齐,但是这们会紧紧靠着左边,不好看, 所以我们还可以修改属性:

button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 这行代码可以让按钮的内容(控件)距离左边10个像素,这样就好看多了

  // button.titleLabel.textAlignment = NSTextAlignmentLeft; 这句无效  
  button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;  
  button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);  

2.关于 UIView 的Opaque

opaque也是表示当前的UIView的不透明度,设置是否之后对于UIView的显示并没有什么影响,官方文档的意思简单点说就是opaque默认为YES,如果alpha小于1,那么应该设置opaque设置为NO,但是如果alpha为1,opaque设置为NO,产生的后果是不可预料的~

比如UIWebView的底部是带有黑线的 ,alpha 默认肯定是1,如果此时设置其背景为 cleanColor 并且 设置 Opaque = No,就会使那条黑线消失掉。

如果了解opaque,需要点屏幕绘制的知识,
屏幕上的每个像素点都是通过RGBA值(Red、Green、Blue三原色再配上Alpha透明度)表示的,
当纹理(UIView在绘图系统中对应的表示项)出现重叠时,
GPU会按照Result = Source + Destination * (1 - SourceAlpha)公式计算重叠部分的像素。
Result是结果RGB值,Source为处在重叠顶部纹理的RGB值,
Destination为处在重叠底部纹理的RGB值。
当SourceAlpha为1时,绘图系统认为下面的颜色全部被遮盖住了,
Result=Source,如果Source的Alpha不为0,上下层颜色就会进行合成,所以opaque默认设置YES,提升绘制性能,
如果开发中UIView是不透明的,opaque设置为YES, 如果opaque设置NO,那么Alpha应该小于1.

3.关于Xcode上的Other linker flags

-ObjC:    加了这个参数后,链接器就会把静态库中所有的Objective-C类和分类都加载到最后的可执行文件中
-all_load:会让链接器把所有找到的目标文件都加载到可执行文件中,但是千万不要随便使用这个参数!
            假如你使用了不止一个静态库文件,然后又使用了这个参数,那么你很有可能会遇到ld: duplicate symbol错误,
            因为不同的库文件里面可能会有相同的目标文件,所以建议在遇到-ObjC失效的情况下使用-force_load参数。
-force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定要进行全部加载的库文件的路径,这样的话,
            你就只是完全加载了一个库文件,不影响其余库文件的按需加载

4.一个经常会错的地方

Paste_Image.png

尤其是在使用继承的时候,这个 隐蔽的调用 super 方法的地方会造成很多隐蔽的错误。使用继承时尤其要注意,调用 super 方法会先执行父类中对应的方法,而后再执行子类中的对应方法。

5.另一个经常会错的地方

我们在使用 可变数组的时候在赋值的时候喜欢这样  
#可变数组 A = 可变数组 B,我们当时只是想把B中的值全部赋值给A。
#这样的错误是  把A数组和B数组指针置为相同了,当  可变数组 A里面的值发生改变时,自然 
#可变数组 B 里面的值也发生相同的改变,因为两者指的的内存地址是同一处。
真确的赋值是这样的: [searchByName addObjectsFromArray:dataArray];

6.Base64编码的字符转图篇

图片上传服务器时还可以转成NSString再上传。

#图片转 Base64字符串  
-(NSString *)UIImageToBase64Str:(UIImage *) image  
{  
    NSData *data = UIImageJPEGRepresentation(image, 1.0f);  
 NSString *encodedImageStr 
 = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];  
return encodedImageStr;  
} 

#Base64 字符串转图片
-(UIImage *)Base64StrToUIImage:(NSString *)_encodedImageStr
{
  NSData *_decodedImageData   = [[NSData alloc] initWithBase64Encoding:_encodedImageStr];
  UIImage *_decodedImage      = [UIImage imageWithData:_decodedImageData];
  return _decodedImage;
}

二进制流

Snip20161223_1.png

Base64编码

Snip20161223_2.png

7.文件写入

一个数组写入一个后缀为 .txt 的文件路径后:

Paste_Image.png

一个字典写入一个后缀为 .txt 的文件路径后:

Paste_Image.png

由上可知道,不管是数组和字典写入文件后都是 默认的plist文件保存的,以XML的数据格式组织的。 那么下面这样的文本文件该怎么生成呢?

Paste_Image.png

#把数组里的字符串以  换行的格式拼在一起,成为一个大的字符串,
NSString *finalStr = [allStr componentsJoinedByString:@"\n"];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *docPath = [paths objectAtIndex:0];
#把字符串写入文本文件中,即可
NSString *oo = [docPath stringByAppendingPathComponent:@"/area.txt"];
[finalStr writeToFile:oo atomically:YES encoding:NSUTF8StringEncoding error:nil];

.

8.同层级所有文件夹同时展开和关起快捷键

Paste_Image.png

我们按住 command键点击 controller左边的三角形,会发现 controller和model和view都展开了。再次点击会都收起。

9.打印指针地址和打印指针指向的对象的地址

. 打印指针的地址(不是指针指向对象的地址):NSLog(@"aStr指针内存地址:%x",&aStr); 打印指针所指向对象的地址使用这个 :NSLog(@"aStr指针所指向对象的地址:%p",aStr); PS:

The retainCount method does not account for any pending autorelease messages send to the receiver. 就是说retainCount 对于autorelease消息产生的的对象,并不可靠。

10.UITableViewController 的View问题

UITableViewController 的View就是一个TableView,常规无法修改他的 View的尺寸,只有在viewDidAppear的时候才可以重新修改UITableViewController的View尺寸也就是 TableView的尺寸。无他方法都无效。 . - (void)viewDidAppear:(BOOL)animated{ [self.tableView setFrame:CGRectMake(x, y, w, h)]; }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

CSharp代码示例每日一讲: 在GDI+中使用画笔和画刷

9710
来自专栏nummy

reStructuredtext快速入门

reStructuredText是一种reStructuredText是一种轻量级的文本标记语言,简单易读,所见即所得的文本标记语言。

8620
来自专栏点滴积累

使用bokeh-scala进行数据可视化

目录 前言 bokeh简介及胡扯 bokeh-scala基本代码 我的封装 总结 一、前言        最近在使用spark集群以及geotrellis框架(...

63780
来自专栏黄Java的地盘

Markdown语法简介

markdown语法目前有两种,我会选择一种我在实践过程中认为比较简单的标记来进行简单介绍。如果需要进行查阅,可以直接阅读末尾总结部分。

7510
来自专栏BestSDK

“Excel格式”最风骚玩法,炫技加薪就靠它了

话不多说直接上干货! 001 自定义格式概述 01 调出单元格格式对话框 选中需要设置格式的单元格,按「CTRL+1」快捷键打开「设置单元格格式」对话框。 在对...

38630
来自专栏陈满iOS

iOS·枚举与整型转换

某项目组之前的小伙伴开发的模块:某页面行距大小根据枚举类型进行设置,现在本人接受项目后,需要添加两个功能,一个按钮增大字体大小,一个按钮缩小字体大小。

57410
来自专栏Coco的专栏

引人瞩目的 CSS 变量(CSS Variable)

19230
来自专栏非著名程序员

基础篇章:React Native 之 TextInput 的讲解

(友情提示:RN学习,从最基础的开始,大家不要嫌弃太基础,会的同学请自行略过,希望不要耽误已经会的同学的宝贵时间) 今天我们讲解的是React Native基础...

22470
来自专栏小狼的世界

Firefox与IE的一些Javascript编程小技巧

说明:IE下,可以使用document.formName.item("itemName")或document.formName.elements["elemen...

11920
来自专栏Danny的专栏

【POI框架实战】——POI导出Excel时设置单元格类型为数值类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

34830

扫码关注云+社区

领取腾讯云代金券