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

大嗨鲜开发总结

作者: 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