Xcode 9 self.navigationItem.titleView = 自定义View 适配

更新Xcode 9遇到第一个比较大的适配就是 self.navigationItem.titleView 先看看未适配前的出现Bug效果

未适配
这个Bug在IOS11 之前都是好的,可以在IOS 11上面我们就会出现这个问题。
解决方案:
  • 在自定义View中手动添加一个intrinsicContentSize 属性,并在.m中重写

@property(nonatomic, assign) CGSize intrinsicContentSize;

static bool closeIntrinsic = false; //Intrinsic的影响

/**
 通过覆盖intrinsicContentSize函数修改自定义View的Intrinsic的大小
 @return CGSize
 */
-(CGSize)intrinsicContentSize
{
    if (closeIntrinsic) {
        return CGSizeMake(UIViewNoIntrinsicMetric, UIViewNoIntrinsicMetric);
    } else {
        return CGSizeMake(self.dc_width, self.dc_height);
    }
}

这个titleView的适配就解决了

适配

推荐参考文章 : 只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance

你可能感兴趣的:(Xcode 9 self.navigationItem.titleView = 自定义View 适配)