Reveal APP(有源码)

在有源码的情况下使用Reveal查看自己APP界面层次,可使用以下步骤实现

本文部分图片来源于(http://www.jianshu.com/p/290af2bf5afb

1.下载Reveal (下载地址:https://pan.baidu.com/s/1sjNySjz
2.找到Reveal动态库

取动态库.jpg

取Reveal库.png

3.把动态库添加到工程中(注意不要勾选target)


添加到project.jpeg

4.把动态库添加到bundle Resource
添加到bundle Resource_1.jpeg
添加到bundle Resource_2.jpeg
添加到bundle Resource_完成.jpeg

5.添加系统库

添加系统库.jpeg

6.添加脚本(下面途中第二个复选框不要勾)

添加脚本.jpeg

脚本源码:

set -e

if [ -n "${CODE_SIGN_IDENTITY}" ]; then

codesign -fs "${CODE_SIGN_IDENTITY}" "${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}/libReveal.dylib"

fi

7.在

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions函数中加载reveal动态库
屏幕快照 2016-08-31 下午5.21.22.png

源码:

- (void)loadReveal

{
    
    if (NSClassFromString(@"IBARevealLoader") == nil)
        
    {
        
        NSString *revealLibName = @"libReveal"; // or @"libReveal-tvOS" for tvOS targets
        
        NSString *revealLibExtension = @"dylib";
        
        NSString *error;
        
        NSString *dyLibPath = [[NSBundle mainBundle] pathForResource:revealLibName ofType:revealLibExtension];
        
        if (dyLibPath != nil)
            
        {
            
            NSLog(@"Loading dynamic library: %@", dyLibPath);
            
            void *revealLib = dlopen([dyLibPath cStringUsingEncoding:NSUTF8StringEncoding], RTLD_NOW);
            
            if (revealLib == NULL)
                
            {
                
                error = [NSString stringWithUTF8String:dlerror()];
                
            }
        }
        
        else
            
        {
            
            error = @"File not found.";
            
        }
        
        if (error != nil)
            
        {
            
            NSString *message = [NSString stringWithFormat:@"%@.%@ failed to load with error: %@", revealLibName, revealLibExtension, error];
            
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Reveal library could not be loaded"
                                        
                                                                           message:message
                                        
                                                                    preferredStyle:UIAlertControllerStyleAlert];
            
            [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
            
            [[[[[UIApplication sharedApplication] windows] firstObject] rootViewController] presentViewController:alert animated:YES completion:nil];
            
        }
        
    }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,142评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,223评论 4 61
  • 小学时候发过一本课间读物《可爱的代县》,挚爱语文却是不硬细看文字,浏览了有图片的小短句,记下了代县的鼓楼与应县的塔...
    沉睡的大象阅读 249评论 0 0
  • 老师说话不算数,说下周就考试,于是那么多考试和六级垒在了一起。本来就有考前综合症,这样越发爱折磨人了。 看帆帆怎么...
    袁妞阅读 297评论 0 0
  • 是,不管我怎么做都无法取代你姐姐在你心目中的地位,我做的再好,永远不及你姐姐,什么都要和你姐姐比, 对,我是生气了...
    坦荡兮兮阅读 195评论 0 0