专栏首页進无尽的文章实践-小细节Ⅴ

实践-小细节Ⅴ


1. 对于系统UIButton设置富文本的坑

  _submitButton.titleLabel.attributedText = [self creatAttributedString];
  #有效
  [_submitButton setAttributedTitle: [self creatAttributedString] forState:UIControlStateNormal];

为什么不能这样呢,SDK说的很明确。

2. 避免多个UICollectionView 在一个View中

如果你在一个页面中创建了多个 UICollectionView 它们使用一套代理方法,也许在每个代理方法中你对当前的UICollectionView 做了判断,使用了不用的数据源,可是你会发现还是有莫名其妙的Bug,而且往往这些Bug,难以解释。

正确的做法是: 如上图的效果,自定义一个包含一个Label 一个UICollectionView的视图,创建两个对象即可,这样可避免多个UICollectionView使用一套代理协议造成的莫名其妙的Bug。

3. 限制输入小数点两位,超出限制范围输入不了

这也算一条路,与其最后弹框提示,不如不让其输入违法字符。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (![textField  isMemberOfClass:[OSTextField class]]) {
        return NO;
    }
    NSMutableString * futureString = [NSMutableString stringWithString:textField.text];
    [futureString  insertString:string atIndex:range.location];

    NSInteger flag=0;
    const NSInteger limited = 2;
    for (NSInteger i = futureString.length-1; i>=0; i--) {
    if ([futureString characterAtIndex:i] == '.') {
        if (flag > limited) {
            return NO;
        }
          break;
      }
    flag++;
  }
   return YES;
}

4. Bool和bool 的不同之处

OC 中的BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用8位的存储空间。通过#define指令把YES定义为1,NO定义为0。

注意:objective-c 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理。编译器仍将BOOL认作8位二进制数,YES 和 NO 值只是在习惯上的一种理解。 问题:如果不小心将一个大于1字节的整型值(比如short或int)赋给一个BOOL变量,那么只有低位字节会用作BOOL值。如果该低位字节刚好为0(比如8960,写成十六进制为0x2300),BOOL值将会被认作是0,即NO值。 而对于bool类型,只有true和false的区别,即0为false,非0为true。

举例: BOOL b1=8960; // 实际是 NO, 因为8960换成十六进制为0x2300,BOOL 只有8位存储空间,取0x2300的低8位,00,所以是NO bool b2=8960;//实际是true, 因为bool类型,非0即为true。

5. cellForRowAtIndexPath的崩溃问题

ReportTableViewCell *cell = [Tb cellForRowAtIndexPath:[NSIndexPath indexPathForRow:5 inSection:0]];

inSection 不带就崩溃,这在表的删除某行,插入某行是同样适用。

6.Pop回来导航栏隐藏时出现上出现一片空白

 方法1  [self.navigationController.navigationBar setHidden:YES];  
 方法2  [self.navigationController setNavigationBarHidden:YES];  
 方法3  [self.navigationController setNavigationBarHidden:YES animated:YES];  

使用第三种方法,就不会出现返回时一片空白的情况了。

7.UILabel上下居中

image.png

图中使用的是一个Label,为什么会出现图中这样的问题,出现顶部的大片空白是因为这个Label的高度太高,而内容却相对较少,把Label的高度设置短点即可。

8.UIImageView的几种图片填充方式

typedef enum {
   UIViewContentModeScaleToFill,
    UIViewContentModeScaleAspectFit,      // contents scaled to fit with fixed aspect. remainder is transparent
    UIViewContentModeScaleAspectFill,     // contents scaled to fill with fixed aspect. some portion of content may be clipped.
    UIViewContentModeRedraw,              // redraw on bounds change (calls -setNeedsDisplay)
    UIViewContentModeCenter,              // contents remain same size. positioned adjusted.
    UIViewContentModeTop,
    UIViewContentModeBottom,
    UIViewContentModeLeft,
    UIViewContentModeRight,
    UIViewContentModeTopLeft,
    UIViewContentModeTopRight,
    UIViewContentModeBottomLeft,
    UIViewContentModeBottomRight,
} UIViewContentMode;

UIViewContentMode 是UIView的属性,默认是第一种 UIViewContentModeScaleToFill,UIImageView下即图片适应UIImageView尺寸铺满 UIImageView。 其他模式的效果如下:

默认是这样的

折中方法: 
[self.headImage setContentMode:UIViewContentModeScaleAspectFill];
self.headImage.clipsToBounds = YES;

后是这样的

9.swf是什么文件

swf是flash动画文件,不少朋友经常玩的网页游戏以及网页视频电影其实都是swf文件,swf文件在网络中非常常见,比如:优酷或土豆视频播放的都是swf文件

大家只要简单的理解为swf文件是动画文件即可,swf(shock wave flash)是Macromedia(现已被ADOBE公司收购)公司的动画设计软件Flash的专用格式,是一种支持矢量和点阵图形的动画文件格式,被广泛应用于网页设计,动画制作等领域。

不过对于一个链接为 http:XXXXXXXXXXXX.swf 的视频链接,使用原声的视频播放器是无法播放的,而且使用 UIWebVIew加载也是无法显示的,可以这样理解,苹果封杀了 Flash文件(swf格式),不支持Flash的播放,这跟乔布斯讨厌Flash有关,目前为止,除了格式转化为 HTML文件播放,原声iOS环境是不支持swf文件的播放。

10.获取某个APP的下载链接

使用 Mac 里面的 iTunes

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java工具篇| Mac环境下安装mysql

    我们都知道数据库的创建可以借助图形化的数据库工具软件,但也可以在Mac终端下来直接使用代码创建。 下面介绍怎样建立数据库、建立资料表、建立索引、数据的增、删、...

    進无尽
  • 如何优化冗长的条件语句

    【1】尽量少用 else 尽量多用 if reture 的语法方式。 【2】字典的逻辑对应转化作用。 【3】用多态替代条件语句 【4】策略模式,继承重写,...

    進无尽
  • Cocopods| 使用自己的私有仓库时的一次报错记录

    查看本地的 cocoapods repos 有没有时,发现没有我们想要的类库:JWJFramework

    進无尽
  • 干货|RSNA肺炎检测挑战赛冠军经验分享

    在国际上,肺炎占所有5岁以下儿童死亡的15%以上。2015年,有920,000名5岁以下儿童死于该病。在美国,肺炎占急诊科就诊人数超过50万[1],...

    fishexpert
  • 干货|RSNA肺炎检测挑战赛冠军经验分享

          在国际上,肺炎占所有5岁以下儿童死亡的15%以上。2015年,有920,000名5岁以下儿童死于该病。在美国,肺炎占急诊科就诊人数超过50万[1],...

    fishexpert
  • 2017数据科学领域15大热门GitHub项目

    -欢迎 加入AI技术专家社群>> GitHub现在不再仅仅是一个软件寄存管理器,而是软件工程师通过它来共享他们自己开发的工具/库,甚至这些资源对一些公司都很重要...

    企鹅号小编
  • 好好编程-物流项目12【用户管理-分页实现】

      通过前面的介绍我们实现了用户信息的CRUD操作,接下来我们介绍了用户信息的分页查询。

    用户4919348
  • 独家 | 这15个最热门的GitHub库你不可错过!

    原文标题:15 Trending Data Science GitHub Repositories you can not miss in 2017 作者:SU...

    数据派THU
  • 「智能云」战略新品震撼发布,开发者如何快速上手?(持续更新中)

    腾讯云技术社区陆续推出了系列文章,向普通开发者如何快速接入并使用这三大 AI 能力,节省自身的开发成本,同时极大提升开发效率和用户体验。

    云加社区
  • Top 50机器学习项目实战总结

    用户1737318

扫码关注云+社区

领取腾讯云代金券