当前位置:  编程技术>移动开发
本页文章导读:
    ▪判断是不是是 emoji表情        判断是否是 emoji表情 + (BOOL)stringContainsEmoji:(NSString *)string { __block BOOL returnValue = NO; [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:.........
    ▪ performSelector:withObject:afterDelay:调用无效的解决办法        performSelector:withObject:afterDelay:调用无效的解决方法 performSelector:withObject:afterDelay:调用后,指定的@selecter()没有执行,[NSTimer timerWithTimeInterval:invocation:repeats:]也存在这个问题。反复验证后发现,.........
    ▪ 2013.6.25小结——界面布局小技巧       2013.6.25总结——界面布局小技巧 1.对于上下平分的两栏样式一样的布局,可用一个LinearLayout包起来,设置这两栏的layout_weight都为1,layout_height 为0dp   2.padding是整个控件往某个方向移,margin.........

[1]判断是不是是 emoji表情
    来源: 互联网  发布时间: 2014-02-18
判断是否是 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];
         // surrogate pair
         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 {
             // non surrogate
             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;
             }
         }
     }];
    
    return returnValue;
}

 


    
[2] performSelector:withObject:afterDelay:调用无效的解决办法
    来源: 互联网  发布时间: 2014-02-18
performSelector:withObject:afterDelay:调用无效的解决方法

performSelector:withObject:afterDelay:调用后,指定的@selecter()没有执行,[NSTimer timerWithTimeInterval:invocation:repeats:]也存在这个问题。反复验证后发现,这种现象出现在子线程中,主线程中可正常使用。因此必须保证调用performSelector:withObject:afterDelay:是在主线程中。

 

因此,可以使用GCD的方式,将此调用放在主线程中执行:

 

dispatch_async(dispatch_get_main_queue(), ^{

});

 


    
[3] 2013.6.25小结——界面布局小技巧
    来源: 互联网  发布时间: 2014-02-18
2013.6.25总结——界面布局小技巧

1.对于上下平分的两栏样式一样的布局,可用一个LinearLayout包起来,设置这两栏的layout_weight都为1,layout_height 为0dp

 

2.padding是整个控件往某个方向移,margin是控件中的内容往某个方向移动

 

3.LinearLayout中的

 android:gravity="center_vertical"

 属性可以让这个布局中的所有控件垂直居中

 

4.EditText中的

 android:singleLine="true"

 使得输入的时候敲回车直接跳到下一行


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3