tripleCC's Blog


  • 首页

  • 归档

  • 标签

  • 关于

UITextFiled文字抖动效果

发表于 2015-07-27 | 分类于 ios |

最终设置UITextField的placeholder效果:


有需求1如下:

  • 未点击时UITextField的placeholder为浅灰色
  • 点击后,还未进行输入时,UITextField的placeholder变为深灰色

    阅读全文 »

UINavigationBar属性小结及返回按钮更改

发表于 2015-07-23 | 分类于 ios |

UINavigationBar属性

  • 如果想统一设置,可以通过以下方法,获取当前类下的所有对象的导航条,然后进行设置
1
[UINavigationBar appearanceWhenContainedIn:self, nil];
  • 背景图片

1
2
// barMetrics需要设置成UIBarMetricsDefault
- (void)setBackgroundimages:(UIimages *)backgroundimages forBarMetrics:(UIBarMetrics)barMetrics
  • 背景阴影图片

1
@property(nonatomic,retain) UIimages *shadowimages
阅读全文 »

Block技巧与底层解析

发表于 2015-07-19 | 分类于 objective-c |

最近看了一些block的资料,并动手做了一些实践,摘录并添加了一些结论。

什么是block?

首先,看一个极简的block:

1
2
3
4
5
6
7
int main(int argc, const char * argv[]) {
@autoreleasepool {

^{ };
}
return 0;
}

block编译转换结构

注意: clang -rewrite-objc 的转换都是基于 MRC 的,ARC 中的异同可参考 《ARC 对 Block 的一些影响》一节中的链接

对其执行clang -rewrite-objc编译转换成C++实现,得到以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
struct __block_impl {
void *isa;
int Flags;
int Reserved;
void *FuncPtr;
};

struct __main_block_impl_0 {
struct __block_impl impl;
struct __main_block_desc_0* Desc;
__main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int flags=0) {
impl.isa = &_NSConcreteStackBlock;
impl.Flags = flags;
impl.FuncPtr = fp;
Desc = desc;
}
};
static void __main_block_func_0(struct __main_block_impl_0 *__cself) {
}

static struct __main_block_desc_0 {
size_t reserved;
size_t Block_size;
} __main_block_desc_0_DATA = { 0, sizeof(struct __main_block_impl_0)};
int main(int argc, const char * argv[]) {
/* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool;
(void (*)())&__main_block_impl_0((void *)__main_block_func_0, &__main_block_desc_0_DATA);
}
return 0;
}

不难看出其中的__main_block_impl_0就是block的一个C++的实现(最后面的_0代表是main中的第几个block),也就是说也是一个结构体。

阅读全文 »

Runtime应用之关联对象和MethodSwizzling

发表于 2015-07-14 | 分类于 runtime |

最近用到了sunnyxx的forkingdog系列(UIView-FDCollapsibleConstraints),纪录下关联对象和MethodSwizzling在实际场景中的应用。

阅读全文 »

常用Runtime函数

发表于 2015-07-12 | 分类于 runtime |

这里主要纪录一些常用的函数:

阅读全文 »

Runtime应用之KVC

发表于 2015-07-11 | 分类于 objective-c |

runtime可以以底层的角度来对一些实现方式进行更改,比如说KVC

首先,先来了解下KVC的底层原理:

key : value

  • 1.去模型中查找有没有setValue:,直接调用这个对象setValue:赋值
  • 2.如果没有setValue:,就在模型中查找_value属性
  • 3.如果没有_value属性,就查找value属性
  • 4.如果还没有就报错
    阅读全文 »

runtime基础

发表于 2015-07-10 | 分类于 runtime |

Objective-C的runtime语言使它具备了动态语言的特性,也就是平时所说的“运行时”。在runtime的基础上,可以做很多平时难以想到事,或者化简原先 较为繁杂的解决方案。

相对于静态语言,比如C以下程序

1
2
3
4
5
6
7
#include <stdio.h>
void run()
{}
int main()
{
return 0;
}
阅读全文 »

UIImage图片无限滚动的实现

发表于 2015-06-29 | 分类于 ios |

当app需要切换显示的图片少时,可以使用创建多个UIImageView,来实现多个图片切换显示;但是在图片较多时,这种做法显得很耗内存。所以以下总结了一下自己知道的几个方法与实现,并做了一个简易的封装。

获取演示代码

阅读全文 »
1…67
tripleCC

tripleCC

ʕ•̫͡•ʔ-̫͡-ʕ•͓͡•ʔ-̫͡-ʕ•̫͡•ʔ-̫͡-ʕ•͓͡•ʔ-̫͡-ʔ

68 日志
18 分类
63 标签
GitHub 简书 Twitter StackOverflow E-Mail
© 2021 tripleCC
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4