美文网首页
日常问题

日常问题

作者: 向晚forever | 来源:发表于2017-11-17 16:38 被阅读35次

    一、iOS11适配问题

    1、导航栏问题
    自定义titleView
    iOS11在自定义View上实现:

    @property(nonatomic, assign) CGSize intrinsicContentSize;
    //iOS 11 之后必须适配重写这个属性
    - (CGSize)intrinsicContentSize
    {
        return CGSizeMake(200, 40);
    }
    
    初始化的时候必须给frame否则在iOS10及以下,点击事件无效 企业微信截图_ba0d8efe-1306-4875-b24c-49a26d9e2da6.png

    同样添加导航栏按钮的时候,如果使用下面的代码。则必须给frame,如果没有frame在iOS11没有问题,但iOS10就会消失

    UIButton *rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [rightBtn addTarget:self action:@selector(refresh) forControlEvents:UIControlEventTouchUpInside];
    [rightBtn setTitle:@"刷新" forState:UIControlStateNormal];
    [rightBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightBtn]; 
    
    

    二、tableView问题

    TableviewFooter or HeaderView高度不能使用约束动态设置,只能设置frame。如果使用了自动布局,请给出具体高度,或者强制刷新布局信息[self layoutIfNeeded],拿到frame信息。
    (注意:想要拿到哪个view的frame,必须强制刷新父视图)

    或者使用下面的方法动态设置tableHearderView高度( 推荐使用):

    UIView *tableHearderView = [[UIView alloc] init];
    tableHearderView.backgroundColor = [UIColor lwm_colorWithHexString:@"f5f5f5"];
    
    UIView *backView = [[UIView alloc] init];
    backView.backgroundColor = [UIColor lwm_colorWithHexString:@"efefef"];
    [tableHearderView addSubview:backView];
    [backView mas_makeConstraints:^(MASConstraintMaker *make) {
           make.left.bottom.right.top.equalTo(tableHearderView);
           make.height.mas_equalTo(40);
    }];
    
    CGFloat height = [tableHearderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    CGRect frame = tableHearderView.bounds;
    frame.size.height = height;
    tableHearderView.frame = frame;
    [self.tableView setTableHeaderView:tableHearderView];
    

    不要再layoutSubviews上获取自动布局控件frame给height赋值,会无效

    tableView加载完成方法

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
            //end of loading
            dispatch_async(dispatch_get_main_queue(),^{
                LWMLog(@"刷新完成%@",NSStringFromCGSize(self.contentSize));
     
            });
        }
    }
    

    iOS 11 tableView与顶部控件,或者导航栏之间的有大量的留白

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
        return nil;
    }
    有时候tableview的底部视图也会出现此现象对应的修改就好了
    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
        return nil;
    }
    

    tableview刷新数据后tableview偏移问题:
    你用了estimatedHeightForRowAtIndexPath里预算高度的吗?如果实际高度大于你这预算高度、可能就会发生偏移的哦

    一、日常问题

    1、iOS11下,控制器textField设置secureTextEntry = YES后,该控制器内所有文本不能调用第三方输入法bug处理:

    if (@available(iOS 11.0, *)) {
            self.psdText.textContentType = UITextContentTypeName;
        }
    

    2、ScrollView子控件不随容器View滚动问题:
    今天在接收同事的代码出现ScrollView子控件不随容器View滚动问题:
    可能导致问题:子控件设置了一个top的约束,相对于ScrollView外的控件。重新设置子控件的top约束相对于容器view

    相关文章

      网友评论

          本文标题:日常问题

          本文链接:https://www.haomeiwen.com/subject/qqmjvxtx.html