iOS开发之笔记摘录

emoji、第三方键盘IQKeyboardManager、自定义

2018-07-30  本文已影响2人  平安喜乐698
目录

    1. emoji 
    2. 第三方键盘IQKeyboardManager
    3. 自定义字体
    4. 文本自适应
    5. UIColor
1.emoji
// 过滤emoji表情符号
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
   
    //   限制苹果系统输入法  禁止输入表情
    if ([[[UITextInputMode currentInputMode]primaryLanguage] isEqualToString:@"emoji"]) {
        return NO;
    }


    // 禁止输入emoji表情
    if ([self stringContainsEmoji:text]) {
        return NO;
    }
    
    return YES;
}
// 判断是否输入了emoji 表情
- (BOOL)stringContainsEmoji:(NSString *)string{
    __block BOOL returnValue = NO;
    
    [string enumerateSubstringsInRange:NSMakeRange(0, [string length])
                               options:NSStringEnumerationByComposedCharacterSequences
                            usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                const unichar hs = [substring characterAtIndex:0];
                                if (0xd800 <= hs && hs <= 0xdbff) {
                                    if (substring.length > 1) {
                                        const unichar ls = [substring characterAtIndex:1];
                                        const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                                        if (0x1d000 <= uc && uc <= 0x1f77f) {
                                            returnValue = YES;
                                        }
                                    }
                                } else if (substring.length > 1) {
                                    const unichar ls = [substring characterAtIndex:1];
                                    if (ls == 0x20e3) {
                                        returnValue = YES;
                                    }
                                    
                                } else {
                                    if (0x2100 <= hs && hs <= 0x27ff) {
                                        returnValue = YES;
                                    } else if (0x2B05 <= hs && hs <= 0x2b07) {
                                        returnValue = YES;
                                    } else if (0x2934 <= hs && hs <= 0x2935) {
                                        returnValue = YES;
                                    } else if (0x3297 <= hs && hs <= 0x3299) {
                                        returnValue = YES;
                                    } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
                                        returnValue = YES;
                                    }else if (hs == 0x200d){
                                        returnValue = YES;
                                    }
                                }
                            }];
    
    return returnValue;
}
2.第三方键盘IQKeyboardManager
pod 'IQKeyboardManager'
// 开启(默认开启)
    [[IQKeyboardManager sharedManager] setEnable:true];   

// 键盘距正在编辑的TF的距离
    [[IQKeyboardManager sharedManager]setKeyboardDistanceFromTextField:10]; 
// 点击输入框以外收回键盘(默认:false)
    [[IQKeyboardManager sharedManager]setShouldResignOnTouchOutside:true]; 


// 是否显示键盘上方工具条(默认:true)
    [[IQKeyboardManager sharedManager]setEnableAutoToolbar:false]; 
// 键盘上方toolBar是否显示placeHoolder(默认:true)
    [[IQKeyboardManager sharedManager]setShouldShowToolbarPlaceholder:false];
// 键盘上方toolBar文本填充色
    [[IQKeyboardManager sharedManager]setToolbarTintColor:[UIColor blueColor]];
// 键盘上方toolBar的placeHolder字体
    [[IQKeyboardManager sharedManager] setPlaceholderFont:[UIFont systemFontOfSize:18]];

// 管理TF(根据tag)上下箭头   (IQAutoToolbarBySubviews 根据添加顺序   IQAutoToolbarByPosition 根据坐标位置)
    [[IQKeyboardManager sharedManager]setToolbarManageBehaviour:IQAutoToolbarByTag];
// 键盘右上角完成按钮 文本
    [[IQKeyboardManager sharedManager]setToolbarDoneBarButtonItemText:@"右上方按钮文本"];
// 键盘右上角完成按钮 图片
    [[IQKeyboardManager sharedManager] setToolbarDoneBarButtonItemImage:[UIImage imageNamed:@""]];




// 是否可以向下上,向下上
    [[IQKeyboardManager sharedManager]canGoNext];
    [[IQKeyboardManager sharedManager]canGoPrevious];
    [[IQKeyboardManager sharedManager]goNext];
    [[IQKeyboardManager sharedManager]goPrevious];
3. 自定义字体
1. 导入字体文件 
下载所需ttf文件,复制到项目中
Info.plist中 Fonts provided by application | 字体名.ttf …
项目 |  Build Phases | Copy Bundle Resources 中导入字体

2. 寻找字体名
NSArray *familyNames = [UIFont familyNames];
for( NSString *familyName in familyNames ){
    NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
    for( NSString *fontName in fontNames ){
        printf( "\tFont: %s \n", [fontName UTF8String] );
    }
}
打印所有字体名,找到相对应添加的字体名(不能直接使用ttf文件名作为字体名)

3. 使用
#define YTFont_YHS(x) [UIFont fontWithName:@"MicrosoftYaHei-Bold" size:(x)]
4. 宽度或高度自适应
    label.numberOfLines=0           // 多行
    // 获取文本高((最大宽:求高时必须和label宽度一致,最大高),,字体必须和label字体大小一致,nil)
    labelHeight=str.boundingRectWithSize(CGSizeMake(300, 300), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(13)], context: nil).size.height       

[cell]
    思想一:
        model中+  height:CGFloat!
                  str:String!{
                    didSet{
                        height=(str as NSString).boundingRectWithSize(CGSizeMake(300, 300), options: .UsesLineFragmentOrigin, attributes: [NSFontAttributeName:UIFont.systemFontOfSize(13)], context: nil).size.height
                    }
                  }
        cell中         setModel()中重设label的frame(或使用 自动布局)
        VC中    heightForCell中  return  没有此label时的高度+(dataArr[indexPath.row] as! model).height

    思想二:
        新建Frame文件:将frame全部放在此文件中计算,+ height、各种控件Frame、model

// 获取text高度2

[cell.texLabel textRectForBounds:CGRectMake(100, 5, RZSCREENWIDTH-120, 500) limitedToNumberOfLines:0];
5. UIColor
        通常控件.alpha是不改的,改背景色.alpha   (如果改变label的alpha则它的标题也是透明的)
     let c=UIColor.greenColor()                                                 // 创建    
     let c=UIColor.init(red: 120/255.0, green: 120/255.0, blue: 120/255.0, alpha: 1)  // 创建
     let c=UIColor.init(white: 0.5, alpha: 0.5)                       // white:红绿蓝0.5 alpha:0.5
     let c=UIColor.init(patternImage:UIImage(named:”1.png”)).          // 不对图片进行缩放,超出屏幕则裁剪,少则重复添加
     let c=UIColor.clearColor()                                  // 透明色
     let c=UIColor.yellowColor().colorWithAlphaCompoent(0.5)           // 创建(透明度0.0~1.0)
上一篇 下一篇

猜你喜欢

热点阅读