美文网首页
大嗨鲜开发总结

大嗨鲜开发总结

作者: AmazingMasterYi | 来源:发表于2017-07-03 20:20 被阅读0次

修改UITextField占位文字的颜色

  • 使用attributedPlaceholder
@property(nullable, nonatomic,copy)   NSAttributedString     *attributedPlaceholder;
  • 重写- (void)drawPlaceholderInRect:(CGRect)rect;
- (void)drawPlaceholderInRect:(CGRect)rect;
  • 修改内部占位文字Label的文字颜色
[textField setValue:[UIColor grayColor] forKeyPath:@"placeholderLabel.textColor"];

UITextField占位文字相关的设置

// 设置占位文字内容
@property(nullable, nonatomic,copy)   NSString               *placeholder;
// 设置带有属性的占位文字, 优先级 > placeholder
@property(nullable, nonatomic,copy)   NSAttributedString     *attributedPlaceholder;

枚举值的某个规律

  • 凡是使用了1 << n格式的枚举值, 都可以使用|进行组合使用
UIControlEventEditingDidBegin                = 1 << 16,
UIControlEventEditingChanged                = 1 << 17,
UIControlEventEditingDidEnd                   = 1 << 18,
UIControlEventEditingDidEndOnExit        = 1 << 19,

通知相关的补充

使用block监听通知

// object对象发出了名字为name的通知, 就在queue队列中执行block
self.observer = [[NSNotificationCenter defaultCenter] addObserverForName:UITextFieldTextDidBeginEditingNotification object:self queue:[[NSOperationQueue alloc] init] usingBlock:^(NSNotification * _Nonnull note) {
    // 一旦监听到通知, 就会执行这个block中的代码
}];

// 最后需要移除监听
[[NSNotificationCenter defaultCenter] removeObserver:self.observer];

一次性通知(监听1次后就不再监听)

id observer = [[NSNotificationCenter defaultCenter] addObserverForName:UITextFieldTextDidBeginEditingNotification object:self queue:[[NSOperationQueue alloc] init] usingBlock:^(NSNotification * _Nonnull note) {


    // 移除通知
    [[NSNotificationCenter defaultCenter] removeObserver:observer];
}];

其他

dispatch_async(dispatch_get_global_queue(0, 0), ^{
    // 因为是在子线程注册了通知监听器, 所以beginEditing和endEditing会在子线程中执行
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(beginEditing) name:UITextFieldTextDidBeginEditingNotification object:self];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(endEditing) name:UITextFieldTextDidEndEditingNotification object:self];
});

巧用内边距

  • 在处理一些控件的位置的时候,可以巧用内边距
    • imageEdgeInsets 图片内边距
    • titleEdgeInsets 文字内边距
    • contentEdgeInsets 所有内容内边距

__OBJC 含义

#ifdef __OBJC__ 表示宏内引用的文件确保只被使用Objective-C语言的文件所引用,保证引用关系的清晰。因为项目中可能有C文件,然而C文件不识别部分OC代码关键字

相关文章

网友评论

      本文标题:大嗨鲜开发总结

      本文链接:https://www.haomeiwen.com/subject/bfuzcxtx.html