zoukankan      html  css  js  c++  java
  • ios基础笔记(一)

    1.    设置按钮文字的尺寸 为 按钮自己的尺寸
         button.size = [button.currentTitle sizeWithFont:button.titleLabel.font];
         button.backgroundColor=[UIColor redColor];
    
    2.    常用尺寸
    /**
     44 : cell的默认高度、导航栏的可见高度
     49 : UITabBar的默认高度
     64 : 从窗口顶部到导航栏底部
     20 : 状态栏高度
     320 : 竖屏情况下的屏幕宽度
     480 : 竖屏情况下的3.5 inch 的屏幕高度
     568 : 竖屏情况下的4.0 inch 的屏幕高度
     */
    
    3.    textview改变通知
    #warning 不要设置自己的代理为自己本身
            // 监听内部文字改变
    //        self.delegate = self;
            
            /**
             监听控件的事件:
             1.delegate
             2.- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
             3.通知
             */
            
            // 当用户通过键盘修改了self的文字,self就会自动发出一个UITextViewTextDidChangeNotification通知
            // 一旦发出上面的通知,就会调用self的textDidChange方法
            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange) name:UITextViewTextDidChangeNotification object:self];
    
    4.    copy策略,重写setter方法,
    - (void)setPlacehoder:(NSString *)placehoder
    {
    #warning 如果是copy策略,setter最好这么写
        _placehoder = [placehoder copy];
        
        // 设置文字
        self.placehoderLabel.text = placehoder;
        
        // 重新计算子控件的fame,
        [self setNeedsLayout];//重新布局子控件
    }
    
    4.    UiTabbar  bug修复
    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UINavigationController *)viewController
    {
        UIViewController *vc = [viewController.viewControllers firstObject];
        if ([vc isKindOfClass:[HMHomeViewController class]]) {
            if (self.lastSelectedViewContoller == vc) {
                [self.home refresh:YES];
            } else {
                [self.home refresh:NO];
            }
        }
        
        self.lastSelectedViewContoller = vc;
    }
        self.lastSelectedViewContoller = vc;
        /**
         其实在这里隐藏着一个问题,如果如图所示你的4个TabBar都是指向4个NavigationController,那么没有问题,运行OK。
         但如果你的4个TabBar有任何一个指向的不是NavigationController,那么程序就会crash。因为非NavigationController不能够响应 popToRootViewControllerAnimated: 方法。
         */
        
        if ([viewController isKindOfClass:[UINavigationController class]]) {
            [(UINavigationController *)viewController popToRootViewControllerAnimated:YES];
        }

    5.
    // 自定义Log
    1 #ifdef DEBUG
    2  
    3 #define WCLog(...) NSLog(@"%s %d 
     %@
    
    ",__func__,__LINE__,[NSString stringWithFormat:__VA_ARGS__])
    4  
    5 #else
    6 #define WCLog(...)
    7 #endif
    
    

     6.懒加载

    # pragma mark 懒加载

    //-(NSMutableArray *)imageLinkURL

    //{

    //    if (_imageLinkURL==nil) {

    //        _imageLinkURL=[NSMutableArray array];

    //    }

    //    return _imageLinkURL;

    //}

    如果不使用懒加载,数组初始化方式如下,

        NSMutableArray *imageArray=[NSMutableArray array];

        for (AdImageModel *model in imageModels) {

            [imageArray addObject:model.imageUrl];

     

        }

        self.imageLinkURL=imageArray;

     

     

    不可变数组可以不初始化,可变数组必须初始化

     

    7.block中循环引用

     

     __weak typeof(clearCache) weakClearCache = clearCache;
    
        __weak typeof(self) weakVc = self;
    
        clearCache.operation = ^{
    
            [MBProgressHUD showMessage:@"正在清除缓存...."];
    
            // 清除缓存
    
            NSFileManager *mgr = [NSFileManager defaultManager];
    
            [mgr removeItemAtPath:imageCachePath error:nil];
    
            // 设置subtitle
    
            weakClearCache.subtitle = nil;
    
            // 刷新表格
    
            [weakVc.tableView reloadData];        
    
            [MBProgressHUD hideHUD];
    
        };
      8.用搜索子控制器中寻找父控制器
    1 - (UIViewController*)viewController {
    2     for (UIView* next = [self  superview]; next; next = next.superview) {
    3         UIResponder* nextResponder = [next nextResponder];
    4         if ([nextResponder isKindOfClass:[UIViewController class]]) {
    5             return (UIViewController*)nextResponder;
    6         }
    7     }
    8     return nil;
    9 }
    
    
    
    
    
     1 @interface UIView (Extend) 
     2 - (UIViewController *)viewController; 
     3 @end 
     4  
     5 @implementation UIView (Extend) 
     6  
     7 - (UIViewController*)viewController {   
     8    for (UIView* next = [self superview]; next; next = next.superview) {    
     9            UIResponder* nextResponder = [next nextResponder];     
    10                 if ([nextResponder isKindOfClass:[UIViewController class]]) {      
    11                         return (UIViewController*)nextResponder;
    12                }   
    13       }
    14  return nil; 
    15 }
    16 @end 
    17 
    18  使用示例:
    19 -(void)buttonPress{
    20     ElectronFrom *electronForm=[[ElectronFrom alloc]init];
    21     [[self viewController].navigationController pushViewController:electronForm animated:YES];
    22     [electronForm release];
    23 }
    View Code
    
    
    

      
     
    IOS开发
  • 相关阅读:
    Firefox for macOS 标签关闭按钮设置在左侧
    Nginx 非编译安装 stream 模块实现四层负载均衡
    苹果手机卡死,强制关机方法
    Git安装完成,文件夹下右键菜单不出现出现Git Bash Here 和Git UI Here问题
    AESUtil
    若依框架清空select2选择
    RSAUtils
    springboot 延时任务
    Mqtt的坑,真的坑
    springboot 支付宝支付业务网页端扫码
  • 原文地址:https://www.cnblogs.com/luanmage/p/4543377.html
Copyright © 2011-2022 走看看