Xcode 11.x Xib _UITextLayoutVie

2019-11-13  本文已影响0人  iOS_ITCode

崩溃信息如下:

'Could not instantiate class named _UITextLayoutView because no class named _UITextLayoutView was found;

解决方案:

解决方案 一

1.xib的部分视图改用硬核手写,以避坑。

解决方案 二

2.[下载其他版本Xcode 传送门]

解决方案 三

3.OC 黑魔法 Runtime

创建 文件 UITextViewWorkaround

UITextViewWorkaround.h
#import <Foundation/Foundation.h>
 
@interface UITextViewWorkaround : NSObject
+ (void)executeWorkaround; 
@end
 
UITextViewWorkaround.m
#import "UITextViewWorkaround.h"
#import  <objc/runtime.h>
 
 
 
@implementation UITextViewWorkaround
 
+ (void)executeWorkaround {
    if (@available(iOS 13.2, *)) {
 
    }
    else {
        const char *className = "_UITextLayoutView";
        Class cls = objc_getClass(className);
        if (cls == nil) {
            cls = objc_allocateClassPair([UIView class], className, 0);
            objc_registerClassPair(cls);
#if DEBUG
            printf("added %s dynamically\n", className);
#endif
        }
    }
}
 
@end

-使用该静态方法

#import "UITextViewWorkaround.h"
 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
 
    [UITextViewWorkaround executeWorkaround];
    return yes;
}

swift 版本如收下:

import UIKit
 
@objc
class UITextViewWorkaround : NSObject {
 
    static func executeWorkaround() {
        if #available(iOS 13.2, *) {
        } else {
            let className = "_UITextLayoutView"
            let theClass = objc_getClass(className)
            if theClass == nil {
                let classPair: AnyClass? = objc_allocateClassPair(UIView.self, className, 0)
                objc_registerClassPair(classPair!)
            }
        }
    }
 }
上一篇下一篇

猜你喜欢

热点阅读