iOS开发时的一些小技巧(未完待续 )

本文主要是总结一下在开发的时候,用到的一些小技巧,希望能帮助你们,快速的完成某些功能~

1.设置navigationbar成透明的而不是带模糊的效果?

[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];

self.navigationBar.shadowImage = [UIImage new];

self.navigationBar.translucent = YES; 
复制代码

2.滚动的时候隐藏导航栏

self.navigationController.hidesBarsOnSwipe = YES;
复制代码

###动态隐藏NavigationBar //1.当我们的手离开屏幕时候隐藏- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{    if(velocity.y > 0)    {         [self.navigationController setNavigationBarHidden:YES animated:YES];     } else {         [self.navigationController setNavigationBarHidden:NO animated:YES];    } } //2.在滑动过程中隐藏 //像safari (1)self.navigationController.hidesBarsOnSwipe = YES; (2)- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

  CGFloat offsetY = scrollView.contentOffset.y + __tableView.contentInset.top;  
  CGFloat panTranslationY = [scrollView.panGestureRecognizer translationInView:self.tableView].y;  
  if (offsetY > 64) {     
   if (panTranslationY > 0)        {       
     //下滑趋势,显示         
   [self.navigationController setNavigationBarHidden:NO animated:YES];     
   } else {       
复制代码

//上滑趋势,隐藏            [self.navigationController setNavigationBarHidden:YES animated:YES];         }    } else {         [self.navigationController setNavigationBarHidden:NO animated:YES];    } }

3.计算方法耗时时间间隔

#define TICK   CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
#define TOCK   NSLog(@"Time: %f", CFAbsoluteTimeGetCurrent() - start)
复制代码

4.NSDate与NSString的相互转化

-(NSString *)dateToString:(NSDate *)date {      
  // 初始化时间格式控制器       
 NSDateFormatter *matter = [[NSDateFormatter alloc] init];       
 // 设置设计格式      
    [matter setDateFormat:@"yyyy-MM-dd hh:mm:ss zzz"];        
// 进行转换   
复制代码

NSString *dateStr = [matter stringFromDate:date];        return dateStr;    }

-(NSDate *)stringToDate:(NSString *)dateStr {                // 初始化时间格式控制器        NSDateFormatter *matter = [[NSDateFormatter alloc] init];         // 设置设计格式         [matter setDateFormat:@"yyyy-MM-dd hh:mm:ss zzz"];         // 进行转换         NSDate *date = [matter dateFromString:dateStr];        return date;     }

5.隐藏navigationBar下面的细线

//    但是有细线,这就需要我们做进一步处理,把线去掉,如下方法即可: 
   self.navigationController.navigationBar.shadowImage = [UIImage new];
复制代码

6.设置navigationBar渐变透明效果

  //navigationBar是一个复合视图,它是有许多个控件组成的,那么我们就可以从他的内部入手  
  [[self.navigationController.navigationBar subviews] objectAtIndex:0].alpha = 0;
  //这里可以根据scrollView的偏移量来设置alpha就实现了渐变透明的效果
复制代码

7.判断NSString中是否包含中文

 -(BOOL)isChinese:(NSString *)str{      
  NSString *match=@"(^[\u4e00-\u9fa5]+$)";     
复制代码

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];         return [predicate evaluateWithObject:str];    }

8.判断相机是否可用

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])        {
复制代码

// 这里时刻用的情况         }         else {            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"手机摄像头设备损坏" message:@"" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];                       [alertView show];         }

9.对textFiled进行字符个数的限制

#####在控制器里添加一个通知   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:nil];

#####实现通知中的方法 #pragma mark - Notification Method -(void)textFieldEditChanged:(NSNotification *)obj{     UITextField *textField = (UITextField *)obj.object;     NSInteger maxLength = MAX_STARWORDS_LENGTH;// 设置最大的输入长度 NSString *toBeString = textField.text;           if (toBeString.length > maxLength)        {            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:maxLength];             if (rangeIndex.length == 1)            {                 textField.text = [toBeString substringToIndex:maxLength];             } else {                 NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, maxLength)];           textField.text = [toBeString substringWithRange:rangeRange];             }         } }

还有一种写法也可以

UITextField *textField = (UITextField *)obj.object;    
NSString *toBeString = textField.text;  
  //获取高亮部分  
复制代码

UITextRange *selectedRange = [textField markedTextRange];    UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];    // 没有高亮选择的字,则对已输入的文字进行字数统计和限制    if (!position)    {        if (toBeString.length > MAX_STARWORDS_LENGTH)        {            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];            if (rangeIndex.length == 1)            {                textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];            }            else            {                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];                textField.text = [toBeString substringWithRange:rangeRange];            }        }     }

10.对一个字符串进行MD5加密

- (NSString *)md5:(NSString *)str{   
 const char *cStr = [str UTF8String];   
 unsigned char result[16];   
 CC_MD5(cStr, strlen(cStr), result);
 // This is the md5 call   
 return [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",        result[0], result[1], result[2], result[3],result[4], result[5], result[6], result[7], result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15] ];
 }
复制代码

11.父控件半透明而子控件不透明

设置父控件的背景颜色时候用colorWithAlphaComponent:方法
fuView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
复制代码

直接在上面添加子控件就ok了

12.通过文字内容来计算文字高度 /**

  • 计算文本高度
  • @param text 文本
  • @param limitW 文本宽度
  • @param font 字体
  • @param lineSpacing 行高
  • @param lineHeightMultiple 行间距
  • @param lineBreakMode 段落样式
  • @return */
  • (CGSize)calculateSizeWithText:(NSString *)text limitWidth:(CGFloat)limitW font:(UIFont *)font lineSpacing:(CGFloat)lineSpacing lineHeightMultiple:(CGFloat)lineHeightMultiple lineBreakMode:(NSLineBreakMode )lineBreakMode{

    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineSpacing = lineSpacing; paragraphStyle.lineHeightMultiple = lineHeightMultiple; paragraphStyle.lineBreakMode = lineBreakMode; NSDictionary *cyZoneDocAttribute = @{NSFontAttributeName:font,NSParagraphStyleAttributeName: paragraphStyle};

    CGSize size; size = [text boundingRectWithSize:CGSizeMake(limitW, MAXFLOAT) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:cyZoneDocAttribute context:nil].size; return size; }

这个是设置这个UILabel的富文本属性 /**

  • 富文本
  • @param string 文本
  • @param font 字体
  • @param lineSpacing 行高
  • @param lineHeightMultiple 行间距(1.5倍)
  • @param lineBreakMode 段落样式
  • @return */
  • (NSMutableAttributedString *)getAttributedStringWithString:(NSString *)string font:(UIFont *)font lineSpacing:(CGFloat)lineSpacing lineHeightMultiple:(CGFloat)lineHeightMultiple lineBreakMode:(NSLineBreakMode )lineBreakMode{ NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

    paragraphStyle.lineSpacing = lineSpacing; paragraphStyle.lineHeightMultiple = lineHeightMultiple; paragraphStyle.lineBreakMode = lineBreakMode; NSDictionary *cyZoneDocAttribute = @{NSFontAttributeName:font,NSParagraphStyleAttributeName: paragraphStyle}; [attributedString addAttributes:cyZoneDocAttribute range:NSMakeRange(0, [string length])]; return attributedString; }

13.获取设备的唯一标示

+ (NSString *)getDeviceId
{
    NSString * currentDeviceUUIDStr = [SSKeychain passwordForService:@"com.xinghengedu"account:@"uuid"];
if (currentDeviceUUIDStr == nil || [currentDeviceUUIDStr isEqualToString:@""])
{
    NSUUID * currentDeviceUUID  = [UIDevice currentDevice].identifierForVendor;
    
    currentDeviceUUIDStr = currentDeviceUUID.UUIDString;
    currentDeviceUUIDStr = [currentDeviceUUIDStr stringByReplacingOccurrencesOfString:@"-" withString:@""];
    currentDeviceUUIDStr = [currentDeviceUUIDStr lowercaseString];
    [SSKeychain setPassword: currentDeviceUUIDStr forService:@"com.xinghengedu"account:@"uuid"];
}
return currentDeviceUUIDStr;
}
复制代码

14.判断一个字符串都是数字

+ (BOOL)isPureInt:(NSString *)string{
NSScanner* scan = [NSScanner scannerWithString:string]; 
int val; 
return [scan scanInt:&val] && [scan isAtEnd];
}
复制代码

15.使用block时 __weak __typeof(self)weakSelf = self; __strong __typeof(weakSelf)strongSelf = weakSelf;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值