• 开发中小功能和小问题总结(一)


    1. UILable添加手势

    注意:
    纯代码一定要设置:lable.userInteractionEnabled = YES;
    
    如果控件添加了手势不起作用,查看一下是否允许用户交互。
    

    2.xcode archive 后没有dsym文件

     将  Build Settings -> Build Options -> Debug Information Format  中, 置为了 DWARF,
    
     如果选为DWARF则不会产生dSYM文件,必须选择DWARF with dSYM File才会生成符号表文件。
    
    

    3. IQKeyboardManager - 键盘事件处理(1)

    https://github.com/hackiftekhar/IQKeyboardManager/tree/v3.3.7
    这个使用不需要任何设置,拖入框架即可,自动控制键盘弹出事件。对任何输入控件全部有效。
    注:该框架表示,如果出问题,比如兼容性问题等,概不负责;
    注2:3.3.7 支持ios7。4.0开始只支持iOS8了。
    

    解决:

    1.由于全屏布局下,对viewController上的第一个scrollerView,会有contentInset 自动添加64px,IQKeyboard 对scrollerView做了处理,使得contentInset与scrollerView一致,相当于有添加了64px;但是在键盘隐藏时,并没有-64处理,所有会导致本来可能不会滚动的scrollerView,变成可以滚动。
    解决1:self.automaticallyAdjustsScrollViewInsets = NO;
    解决2:xib或者sb中直接将self.view 继承UUIScrollerView;但是约束方面自己注意。
    

    4. iOS开发--TableView向上偏移的情况

    方法一:

    
    if ([UIDevice currentDevice].systemVersion >= 7.0) //也就是iOS7以后的系统                               
      {                                                  
          self.edgesForExtendedLayout = UIRectEdgeNone;   
          self.extendedLayoutIncludesOpaqueBars = YES;     
          self.automaticallyAdjustsScrollViewInsets = NO; 
    
    <span style="white-space:pre">    </span>navigation.navigationBar.translucent = NO; //取消模糊效果 <span style="font-family: Arial, Helvetica, sans-serif;">}</span> 
    

    方法二:原文地址:http://blog.csdn.net/kmyhy/article/details/20444611

    如果你准备将你的老的 iOS 6 app 迁移到 iOS 7 上,那么你必须注意了。当你的老的 app 在 iOS 7 设备上运行时,所有ViewController 的视图都整体上移了,因为 iOS 7 把整个屏幕高度(包括状态栏和导航栏)都作为了视图控制器的有效高度。于是你的视图上移了,并和上层的状态栏交叠在一起。
    
    你当然可以在 Xcode 中修改每个 View,将他们下移20个像素(状态栏高度)或者64个像素(状态栏+导航栏高度)。
    
    但是苹果显然已经考虑到这个问题,他们在 iOS 7 SDK 中为 ViewController 提供了一个 edgesForExtendedLayout 新属性。如果你将这个属性设置为UIRectEdgeNone,则 viewController 的所有子视图都会自动调整,这样在 iOS 7 下看到的效果和 iOS 6 完全一样。
    
    为了方便,你可以为 UIViewController 扩展一个子类,并覆盖它的 viewDidLoad 方法:
    
    @implementation DerivedViewController
    
    - (void)viewDidLoad
    
    {
    
        [superviewDidLoad];
    
    if ([selfrespondsToSelector:@selector(edgesForExtendedLayout)])
    
           self.edgesForExtendedLayout = UIRectEdgeNone;
    
    }
    
    @end
    
    然后你以后所有的 ViewController 都从这个 DerivedViewController 类继承。
    
    但不幸的是,我们的程序仍然有大量 iOS<7 的用户 ,我们无法立即抛弃对 iOS 6 的支持。无论 edgesForExtendedLayout 还是UIRectEdgeNone,都只能在 iOS7 下有效。对于 iOS 6,我将以上代码修改为:
    
    - (void)viewDidLoad
    
    {
    
        [superviewDidLoad];
    
    #if__IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
    
        if ([selfrespondsToSelector:@selector(edgesForExtendedLayout)])
    
           self.edgesForExtendedLayout = UIRectEdgeNone;
    
    #else
    
        float barHeight =0;
    
        if (!isIPad()&& ![[UIApplication sharedApplication] isStatusBarHidden]) {
    
           barHeight+=([[UIApplication sharedApplication]statusBarFrame]).size.height;
    
        }
    
        if(self.navigationController &&!self.navigationController.navigationBarHidden) {
    
           barHeight+=self.navigationController.navigationBar.frame.size.height;
    
        }
    
        for (UIView *viewin self.view.subviews) {
    
           
    
           if ([view isKindOfClass:[UIScrollView class]]) {
    
               view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y +barHeight, view.frame.size.width, view.frame.size.height - barHeight);
    
            } else {
    
               view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y +barHeight, view.frame.size.width, view.frame.size.height);
    
           }
    
        }
    
    #endif
    
    }
    
    通过宏 __IPHONE_OS_VERSION_MAX_ALLOWED 判断 deployment target 是否 >7.0。>7.0则使用新的 edgesForExtendedLayout API,负责使用比较笨的方法逐个下移 subviews,并自动根据状态栏/导航栏的可视状态计算要移动的偏移量。
    
    注:如果已升级至Xcode5,将导航控制器的 Top Bar 设置为一种“Opacque ...”(不透明)类型可解决此问题。
    
  • 相关阅读:
    Python-list
    C3P0数据库连接池使用中的问题
    不变类和可变类
    apollo配置中心部署文档
    Apollo使用文档(Java)
    Redis偶发连接失败案例分析
    创建Kibana耗时报表
    Session服务器配置,如何保存在专门的StateServer服务器中
    Linux命令对应的英文全称
    IIS记录真实来源IP,Advanced Logging(高级日志)的安装以及X-Forwarded-For的配置
  • 原文地址:https://www.cnblogs.com/xiaofei76/p/5948277.html
Copyright © 2020-2023  润新知