iOS WRNavgationBar与TZImagePickerController双排闪退的问题

TZImagePickerController:支持iOS6-9的多选图片和视频选择器组件 本文还有配套的精品资源,点击获取 简介: TZImagePickerController是一款为iOS平台开发的图片和视频选择器,支持多选、原图选择及预览功能,并全面适配iOS6到iOS9系统。它通过Objective-C编写,并遵循UIKit框架,通过自定义代理协议简化开发者在应用中集成该组件的复杂度。TZImagePickerController为开发者提供了丰富的自定... 阅读详情

前言

在日常摸鱼中接到一个老项目需要维护,发现一个需要访问相册的地方会发生闪退,项目用到了第三方TZImagePickerController,这是一个访问相册的第三方,而就在TZImagePickerController里出现了闪退的bug,bug位置在访问到相册后点击返回箭头退出访问会崩溃,尝试打断点拿到具体崩溃位置和原因,然而奇怪的是,一切非常顺利,并没有出现崩溃现象。我停止运行项目,手动启动APP,点击返回却发现会崩溃,这样我就无法确定具体崩溃原因,不能通过报错找答案,只能通过描述现象在网络世界里探寻解决方案,然而没找到与TZImagePickerController有关的崩溃问题,就在我失望的时候,它出现在我的眼里,没错!就是WRNavgationBar。

WRNavgationBar

WRNavgationBar是一个自定义导航栏功能的第三方,它出现在我眼里就是因为项目里也集成了WRNavgationBar,WRNavgationBar的使用贯通项目里里外外,发现“嫌疑人”,我就在网络世界里找解决方案,最后在WRNavgationBar的GitHub里找到答案,一切都是WRNavgationBar的问题,会和其他三方产生冲突的原因在于点击返回是在子线程调用的,形成堵塞崩溃,解决方案是回到主线程调用。

解决方案

在WRNavigationBar.m中找到:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item

在方法里面找到:

[selfpopToViewController:popToVC animated:YES];

将其替换成:

dispatch_async(dispatch_get_main_queue(), ^{
    [selfpopToViewController:popToVC animated:YES];
});

到此,解决!

啊... 又可以继续摸鱼啦...

WRNavigationBar_swift:WRNavigationBar,它允许您动态更改NavigationBar的外观 要求 iOS 8以上 Xcode 8+ 演示版 安装 手动拖入将WRNavigationBar文件夹拖动入项目中即可使用 如何使用 具体使用方法请参考 // 一行代码搞定导航栏颜色 navBarBarTintColor = .white // 一行代码搞定导航栏透明度 navBarBackgroundAlpha = alpha // 一行代码搞定导航栏两边按钮颜色 navBarTintColor = UIColor(red: 0, green: 0.478431, blue: 1, alpha: 1.0) // 一行代码搞定导航栏上标题颜色 navBarTitleColor = .black 立即下载

相关推荐

机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

要评价模型f(x, θ)的好坏,可通过期望风险R(θ)来衡量:求期望损失R(θ)不仅需要知道损失函数还需要知道真实分布,损失函数可以通过一定的准则计算得到,但是样本空间的真实分布是未知的。所以不能直接求R(θ)。期望风险R(θ)无法计算,给定一个训练集D =,我们可以计算经验风险,经验风险就是在训练集上的平均损失:为了解决过拟合问题,引入了参数正则化来限制模型的能力。使其不要过度的最小化经验风险。这种准则就是结构风险最小化准则

... 2225

《Flutter入门疑难杂症》 iOS 14 下 image_picker 第二次点击读取拍照崩溃

这是flutter framework的bug.可以看以下原因: https://github.com/flutter/flutter/issues/66647 https://github.com/flutter/flutter/issues/65995 https://github.com/flutter/flutter/issues/67353 解决方案: 修改flutter版本 , 目前用 master 1.24.0-3.0pre 版本可以解决问题. 切换版本步骤(请先记住当前flutter版

Jda_简单爱 1401

STM32F407通过FSMC接口与LAN9252的EtherCAT从站移植实战

本文详细介绍了在STM32F407平台上,通过FSMC接口驱动LAN9252 EtherCAT从站控制器的完整移植实战。内容涵盖硬件连接、FSMC时序配置、官方SDK代码分析与关键修改、EtherCAT协议栈集成适配,以及实战调试与稳定性优化技巧,旨在帮助工程师解决工业通信中的核心挑战,实现稳定高效的实时控制网络接入。

weixin_29268267的博客 274

探索优雅的导航栏解决方案:WRNavigationBar

是一个由iOS开发者王睿打造的开源库,旨在为你的Swift或Objective-C应用提供美观且易定制的导航栏。这个项目简化了在iOS应用中处理导航栏样式和动画的工作,让开发者能够更加专注于功能实现,而非UI细节。 ## 技术分析 **1. **高度可定制化**: WRNavigationBar 提供了一系列API,允许开发者自定义导航栏的颜色、透明度、阴影效果,甚至过渡动画。这包括但不限于设...

gitblog_00087的博客 571

R语言的下载、安装及环境配置(Rstudio&VSCode)

R for Windows是一个免费的用于统计计算和统计制图的优秀工具,是R语言开发工具。它拥有数据存储和处理系统、数组运算工具(其向量、矩阵运算方面功能尤其强大)、完整连贯的统计分析工具、优秀的统计制图等功能。提供的图形界面,可以在其中访问控制台、创建脚本或安装其他软件包。

zegeai的博客 2万+

爬取百度图片

最开始,我们想要爬取图片,首先需要打开百度图库,然后在搜索栏中输入自己想要的图片(比如说壁纸)。接着右键检查,点击网络:起初可能没有名称信息,刷新界面就可以了。打开信息,查看标头内容可以看到请求URL为:复制这串URL,然后在浏览器中打开这个就是我们搜索的壁纸图片的网页内容。怎么找到图片的URL呢?在上述内容中,找到data,可以发现里面每隔一个aiEditData,下面代码的形式是一样的,就相当于一张图片。

weixin_54143563的博客 1942

WRNavigationBar 使用教程

WRNavigationBar 是一个开源的 iOS 库,允许开发者动态改变导航栏的外观。通过简单的 API 调用,可以轻松设置状态栏、导航栏按钮、标题、颜色和透明度等。该项目支持 Objective-C 和 Swift 两种语言,适用于 iOS 7.0+ 的版本。 ## 项目快速启动 ### 安装 #### 使用 CocoaPods 在 `Podfile` 中添加以下内容: ```ru...

gitblog_00222的博客 373

DC竞赛 国能日新功率预测题 rank21 解决方案(适合新手)

DataCastle国能日新光伏功率预测 数据异常处 本题在测试集中提供了时间、辐照度、风速、风向、温度、压强、湿度、实发辐照度8个特征,以及标签**实际功率**。 而在训练集中只有前七个特征,无实发辐照度。 策略 在观察了数据之后,我们确定实发辐照度是一个强力特征,于是我们采取了stacking的策略: 1. 第一次训练以实发辐照度为标签,预测 测试集的实发辐照度 2....

yyhhlancelot的博客 7294

iOS-TZImagePickerController使用,调用相册,实现多选图片

iOS-TZImagePickerController使用,调用相册,实现多选图片

qq_43441647的博客 2400

利用WebDAV协议将百度网盘挂载为本地网络硬盘的完整指南

WebDAV是一种基于HTTP/HTTPS的扩展协议,它允许客户端通过标准HTTP方法对远程服务器上的文件进行读写和管理。其核心原理是通过定义如PROPFIND、PUT、GET等标准化方法,实现跨平台的远程文件系统访问。这项技术的价值在于打破了不同存储服务间的壁垒,将封闭的云存储生态接入开放标准协议体系。在工程实践中,WebDAV常被用于实现跨设备文件同步、媒体服务器集成和生产力工具数据备份等场景。通过搭建WebDAV服务器作为协议转换层,可以将百度网盘这类封闭存储服务映射为标准网络存储,实现类似bdpan

weixin_42523907的博客 2428

免费教你快速学会分析运算放大器电路(保证学会)

本文旨在学习如何快速简单地对运算放大器进行分析

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 1万+

TZImagePickerController 基础使用

TZImagePickerController 崩溃, 如果存在block可能崩溃的问题,回归主线程调用,如下栗子。

qq_29305413的博客 3176

Apache Kylin 命令注入漏洞复现(CVE-2020-1956)

Apache Kylin 中的静态 API 存在安全漏洞,可以将os命令与用户输入字符串连接起来,攻击者可以在Kylin没有任何保护或验证的情况下执行任何os命令。

0xSec 1558

iOS--TZImagePickerController获取图片视频

TZImagePickerControllerDemo 项目介绍 TZImagePickerControllerDemo Podfile新增行 pod 'TZImagePickerController' 使用之前导入头文件 #import <TZImagePickerController.h> 使用说明 选照片 //MaxImagesCount 可以选着的最大条目数 ...

叫我龙哥的优快云 5573

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

执行pod update更新有报如下错误[!] Error installing TZImagePickerController

[!] Error installing TZImagePickerController [!] /usr/bin/git clone https://github.com/banchichen/TZImagePickerController.git /var/folders/f4/x_qz73l14cj44189vx_vx8wh0000gn/T/d20211011-64899-1ev6k7r --template= --single-branch --depth 1 --branch 3.6.6

墨雪 1124

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

iOS 调用UIImagePickerViewController崩溃

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34303897的博客 379

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

iOS-TZImagePickerController获取相册照片、视频 (Swift代码)

1.使用cocoapods导入TZImagePickerContro pod 'TZImagePickerController' 在桥接文件中导入头文件 #import TZImagePickerController 2.使用方法 //maxImagesCount:最多可以选择几张图片 let vc = TZImagePickerController(maxImagesCount: 1, delegate: self)! vc.allowTakeVideo

weixin_43259805的博客 6440

Kronos金融AI预测模型:如何让AI学会解读K线语言

你是否曾经盯着股票K线图,试图从那些红红绿绿的蜡烛线中寻找规律?你是否想过,如果AI能够像理解人类语言一样理解市场行情,它能否预测未来的价格走势?这正是Kronos金融AI预测模型要回答的问题——通过将Transformer架构应用于金融市场数据,让AI学会解读K线语言。 ## 市场预测的困境与AI的解决方案 金融市场预测一直是量化交易领域的核心挑战。传统的时间序列分析方法在面对非平稳、高噪声

gitblog_00349的博客 846

android photopicker怎么修改状态栏,WRNavigationBar 一个轻量的可动态改变导航栏颜色、透明度、大小等属性的框架...

RequirementsiOS 7.0+Xcode 8+Demo InstallationCocoaPods pod 'WRNavigationBar','~>1.2.0’ 如果未发现 1.2.0 请更新一下pod手动拖入 将 WRNavigationBar 文件夹拽入项目中,导入头文件:#import "WRNavigationBar....

weixin_30334225的博客 477

iOS开发之好用的图片选择第三方TZImagePickerController

最近的项目中涉及到了类似于发布朋友圈的功能,其中就需要上传照片等媒体内容,所以为了方便和效果好看,使用了TZImagePickerController第三方来管理和调用媒体内容,现在就是简单介绍一下这个demo的内容,欢迎大家去学习和使用,很有用。如何集成该图片选择器支持CocoaPods, 在你的Podfile文件中加入 pod 'TZImagePickerController'  即可集成。如

hbblzjy的博客 2万+

WRNavigationBar 常见问题解决方案

WRNavigationBar 是一个用于 iOS 的开源项目,旨在简化导航栏的设置和管理。通过一行代码,开发者可以轻松设置状态栏、导航栏按钮、标题、颜色、透明度等属性。该项目主要使用 Objective-C 编写,适用于 iOS 7.0 及以上版本,支持 Xcode 8 及以上版本。 ## 新手使用注意事项及解决方案 ### 1. 项目依赖管理 **问题描述**:新手在使用 CocoaPo...

gitblog_00007的博客 653

【亲测免费】 TZImagePickerController 使用指南

[TZImagePickerController](https://github.com/banchichen/TZImagePickerController) 是一个针对 iOS 平台开发的图片选择器组件,它支持多项核心功能,包括但不限于: - **多选图片** - **选择原图** - **选取视频** - **预览功能** - **内置裁剪** 此组件兼容 iOS 6 及以上版本,是对 ...

gitblog_00384的博客 1901

UIImagePickerController在ios10环境一打开就crash的问题

在之前的系统环境下,UIImagePickerController都可以顺利打开。但是自从手机升级了ios10以后,每次打开相机和照片库都会直接崩溃。通过google搜索找到StackOverflow的帖子,简单讲就是从ios10开始,调用用户相机和访问照片库都需要先获取使用权限。具体的方法就是在info.plist文件中添加以下两项内容:获取相机权限<key>NSCameraUsageDescri

憧憬的专栏 1185

EMQX 热升级变革:REST API 移除后如何通过 `emqx ctl relup` 完成节点热升级

EMQX 从本版本起移除了热升级(Hot-upgrade)相关的 REST API 端点(`/api/v5/relup/*`),热升级操作将完全通过每个节点上的 `emqx ctl relup` 命令行工具进行,不再提供 Dashboard 操作界面。本文以官方 breaking change 说明为骨架,结合仓库中 `emqx_relup` 插件的完整源码实现,详细讲解变更内容、新的 CLI 操

gitblog_00061的博客 459

iOS 图像选取器UIImagePickerController

UIImagePickerController可以帮助我们调用摄像头拍照或者希望从相册中选择照片。 UIImagePickerController主要属性 // 图片获取来源 @property(nonatomic) UIImagePickerControllerSourceType sourceType; // 拍完照或相册选择图片后,是否允许编辑图像 @property(nonatomic) BOOL allowsEditing; // 媒体类型,public.image和public.movie,默认

假装你是大灰狼的专栏 3267

iOS设置导航栏navigationBar大小、颜色、透明度等一切操作(WRNavigationBar)

本文来自简书,原文地址:http://www.jianshu.com/p/540a7e6f7b40 0️⃣. Demo 基本.gif

努力,可能成功!放弃,注定失败! 6257
上一篇: 网站经常出现的错误代码对照表
下一篇: iOS 解决pod ‘MBProgressHUD‘没有隐私清单的问题
YourReference
博客等级 码龄10年 15粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值