首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设置QLPreviewingController中断的preferredContentSize自动调整大小

QLPreviewingController 是一个用于在 iOS 应用程序中预览文件内容的控制器,它支持多种文件格式,如 PDF、图片、文本等。preferredContentSize 属性用于指定控制器的内容大小,这在自动调整大小时非常有用。

基础概念

QLPreviewingControllerUIViewController 的子类,它提供了一个界面来预览各种类型的文件。preferredContentSize 是一个只读属性,表示控制器的内容大小。通过实现 previewController:previewItemAtIndex: 方法,可以自定义每个预览项的内容。

相关优势

  1. 支持多种文件格式QLPreviewingController 支持多种常见的文件格式,无需额外处理。
  2. 自动调整大小:通过设置 preferredContentSize,可以实现内容的自动调整大小,提升用户体验。
  3. 集成简单:只需实现几个必要的代理方法,即可轻松集成到现有项目中。

类型

QLPreviewingController 主要有以下几种类型:

  • PDF 预览:支持 PDF 文件的预览。
  • 图片预览:支持图片文件的预览。
  • 文本预览:支持文本文件的预览。

应用场景

  • 文档管理应用:用于预览各种文档文件。
  • 图片浏览器:用于预览图片文件。
  • 邮件客户端:用于预览附件文件。

设置 preferredContentSize 自动调整大小

要设置 QLPreviewingControllerpreferredContentSize 自动调整大小,可以通过以下步骤实现:

  1. 实现代理方法: 首先,确保你的视图控制器实现了 QLPreviewingControllerDelegateQLPreviewingControllerDataSource 协议。
  2. 实现代理方法: 首先,确保你的视图控制器实现了 QLPreviewingControllerDelegateQLPreviewingControllerDataSource 协议。
  3. 返回预览项的内容大小: 在 previewController:previewItemAtIndex: 方法中,返回每个预览项的内容大小。
  4. 返回预览项的内容大小: 在 previewController:previewItemAtIndex: 方法中,返回每个预览项的内容大小。
  5. 设置 preferredContentSize: 在 previewControllerWillDismiss: 方法中,设置 preferredContentSize
  6. 设置 preferredContentSize: 在 previewControllerWillDismiss: 方法中,设置 preferredContentSize

示例代码

以下是一个完整的示例代码,展示了如何设置 QLPreviewingControllerpreferredContentSize 自动调整大小:

代码语言:txt
复制
import UIKit
import QuickLook

class ViewController: UIViewController, QLPreviewingControllerDelegate, QLPreviewingControllerDataSource {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 注册预览控制器
        self.registerForPreviewing(with: self, sourceView: self.view)
    }
    
    // MARK: - QLPreviewingControllerDataSource
    
    func numberOfPreviewItemsInPreviewController(_ controller: QLPreviewController) -> Int {
        return 1 // 返回预览项的数量
    }
    
    func previewController(_ controller: QLPreviewController, previewItemAtIndex index: Int) -> QLPreviewItem {
        let fileURL = URL(fileURLWithPath: Bundle.main.path(forResource: "example", ofType: "pdf")!)
        return fileURL as QLPreviewItem
    }
    
    // MARK: - QLPreviewingControllerDelegate
    
    func previewControllerWillDismiss(_ controller: QLPreviewController) {
        self.preferredContentSize = controller.view.bounds.size
    }
}

参考链接

通过以上步骤和示例代码,你可以实现 QLPreviewingControllerpreferredContentSize 自动调整大小,提升用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Jupyter notebook设置背景主题,字体大小自动补全代码操作

1、设置Jupyter主题: (1)在python环境找到pip.exe路径 执行: pip install jupyterthemes (2)安装和更新成功以后,可以查看可用主题:jt -l...jt -l (3)设置主题,字体,字体大小,宽度… jt -t monokai -f fira -fs 16 -cellw 94% -ofs 14 -dfs 14 -T -N -t(主题) -f(...字体) -fs(字体大小) -cellw(占屏比或宽度) -ofs(输出段字号) -T(显示工具栏) -N(显示自己主机名) 效果如下图: (4)想要更多风格可以自行根据下面的命令行格式配置,可以打乱顺序...2、设置自动补全代码 (1)在python环境找到pip.exe路径 (2)首先安装 nbextensions pip install jupyter_contrib_nbextensions jupyter...,能看到增加了一个Nbextensions标签页,在这个页面里,勾选Hinterland即启用了代码自动补全,如图所示: 以上这篇Jupyter notebook设置背景主题,字体大小自动补全代码操作就是小编分享给大家全部内容了

2.6K20

在VMware虚拟机软件中安装Ubuntu虚拟机窗口不能自动调整大小解决办法

在 VMware虚拟机软件 中安装 Ubuntu虚拟机 窗口不能自动调整大小解决办法:   配置虚拟机时,发现屏幕大小太小,一般解决思路是:需要安装vmware tools ,屏幕就会自适应 。...,进入并找到 ”vmware-install.pl“ 脚本文件, 该文件就是安装 vmware tool 脚本文件。   ...5)打开终端(命令行),进入到 vmware-install.pl 文件所在目录下,运行命令执行该perl 脚本:sudo perl vmware-install.pl 或者sudo ....(中文版是:查看 --> 自动调整大小 --> 自动适应客户机大小 )   9)Ubuntu分辨率调整,进入“系统设置”,找到 “显示” 点击进入调整你需要分辨率,通常数值越大,界面就越大,能显示内容就越多...至此配置成功,虚拟机可随VMware窗口大小自动调整。 问题解决之后界面: ?

13.4K30
  • linux系统下Vi编辑器或者Vim编辑器设置显示行号、自动缩进、调整tab键宽度技巧?

    :(注意:括号中不是哦,是我添加注释说明) set shiftwidth=4    (表示每一级缩进长度) set softtabstop=4   (表示在编辑模式时候按退格键时候退回缩进长度...) set nu        (显示行号) set autoindent     (自动缩进) :wq (保存退出) source .vimrc   ...这是需要: 在root用户下使用命令 vi /etc/vim/vimrc.tiny 修改文件,将set compatible 设置成set nocompatible。...这是因为有时候系统会默认vim兼容vi,所以使用vi命令。 操作完成后,再次按照上面的操作设置下即可。...=================================================================== 使用SecureCRT vim编辑行时,发现一行到72个字符时就自动换行了

    3.2K20

    iOS---iPad开发及iPad特有的特技

    iPad开发简单介绍 iPad开发最大不同在于iPhone就是屏幕控件适配,以及横竖屏旋转。 Storyboard中得SizeClass横竖屏配置,也不支持iPad开发。...上 1>设置内容控制器(并需先创建内容控制器) 强调UIPopoverController不是继承UIViewController,也就不具备显示功能,要设置内容,使用initWithContentViewController...animated:(BOOL)animated; @property (nonatomic, retain) UIViewController *contentViewController; 2>设置尺寸...设置popView大小(默认控制器有多大就显示多大)(120, 44 * 3) UIPopoverController方法popoverContentSize 内容控制器中设置方法 self.preferredContentSize...self.contentSizeForViewInPopover /ios7过时/ 3>设置在什么地方显示 调用方法 /** * 弹出UIPopoverController方法(一) * *

    2.5K70

    Mac开发跬步积累(三):被忽略 NSTabViewController

    代替NSTabViewController样式设置,即可实现更多样式设置效果....每个macOS App 几乎都有一个功能: 偏好设置,如果偏好设置选项比较少,一个页面就足够展示,这种情况使用一个NSViewController就可以实现效果了,但通常来讲,我们希望自己App...能提供给用户更多选项设置,以便于用户可以更多进行个性化选择功能,这时候就属于NSTabViewController用武之地了 0x04: 用NSTabViewController实现偏好设置功能(...系统Finder 偏好设置切换效果: 系统Finder 偏好设置 需求点: 在NSTabViewController切换业务控制器时,需要动态调整所在window尺寸 效果实现: 要在NSTabViewController...,那么一定是你在子业务控制器中少写了下面这行代码 self.preferredContentSize = view.frame.size 最终实现效果: 实现效果

    2.5K40

    JVM调优-有调优我不用,我就耗着,哎,就是玩儿

    设置新生代大小 -XX:MaxNewSize 新生代最大值 -XX:PermSize 设置持久代初始值(默认物理内存1/64) -XX:MaxPermSize 设置持久代最大值 -Xss 每个线程堆栈大小...-XX:ThreadStackSize 设置每个线程堆栈大小 -XX:NewRatio 新生代与老年代比值(默认4) -XX:SurvivorRatio Eden区与Survivor区比值(默认8...-XX:MaxGCPauseMillis 新生代每次垃圾回收最大时间 -XX:+UseAdaptiveSizePolicy 自动选择新生代大小和相应Survivor区比例 -XX:GCTimeRatio...打印GC时程序暂停时间 -XX:+PrintGCApplicationConcurrentTime 打印GC前程序未中断执行时间 -XX:+PrintHeapAtGC 打印GC前后堆信息 -Xloggc...GC最大时间,无法满足此时间自动调整新生代大小,并且自动选择新生代大小和相应Survivor区比例。

    36210

    KeyarchOS:全天候智能化运维,为企业增效降本

    在未释放内存汇总中会记录 相同函数申请page页数量、大小等,以及函数名称等,并按降序进行排列。...directreclaim,建议调整该参数为系统总内存大小1-3% 3)IO相关: None 4)网络相关: /proc/sys/net/ipv4/tcp_fack 推荐设置为1 /proc/sys/...通过使用Runlatency监控整个系统或单个进程中断和调度信息,监控数据包括: 进程/线程调度延迟,比如运行队列挤压、排队时间过长以及高优先级应用抢占或本身调度策略设置不合理。...中断和软中断响应不及时,业务运行过程会依赖于中断和软中断执行过程,包括网络收发包、IO 读写等。因此可以分析关中断时长来判断中断响应时间。...引入大模型知识库达到运维智能化、自动化运维能力:通过监控、诊断、维护等达到全过程自动化运维。

    31610

    07-STM32+ESP8266+AIR202远程升级方案-功能2-STM32+Air202(GPRS)实现利用http远程更新STM32程序(定时访问升级,备份升级)

    如果与自身版本号对比不一致,就把固件程序大小和固件程序下载地址写入flash,然后设置更新标志,重启, 重启执行BootLoader以后,BootLoader程序检测到更新标志,则提取固件下载地址,...需要使用下载器 ST-Link  / Jlink  2.调整用户程序下载设置 只擦除使用部分 ? 3.注意检查下其它配置是否正确 ? ? 4.然后点击下载 ?...注意:程序本身就支持下载出错自动回滚程序,崩溃处理基本上用不到!...2.修改版本号(和用户程序里面设置一样) ? 3.修改固件程序大小(OTA Tools_1.0.5提示信息里面有这个大小) ? 4.修改固件程序下载地址(和服务器上面的保持一致) ?...3.关于flash区域分配 客户可以在 stmflash.h里面设置flash分配 ? 调整以后,可以查看日志查看具体地址信息 ? 然后根据上面打印信息调整用户程序参数 ?

    50720

    06-STM32+ESP8266+AIR202远程升级方案-移植STM32+ESP8266实现利用http或https远程更新STM32程序到自己项目(定时访问升级,备份升级)

    17,建议在BootLoader程序里面打开看门狗 可直接把我提供升级源码中看门狗复制过来 ? 18,屏蔽掉BootLoader程序里面使用中断 用户需要把自己中断函数放到此处关闭! ?...printf打印最好加上缓存,中断发送方式(建议环形队列+中断) 如果用户用 USART_SendData(其它串口,c); 等类似的阻塞型函数实现printf 请屏蔽以下部分 ? ?...21,根据bin文件大小在 stmflash.h中调整下flash分配 STM32_FLASH_SIZE  根据自己单片机容量调整 如果使用是128KB Flash单片机: FLASH_IAP_SIZE...XX   根据BootLoader生成bin文件大小设置(该值需要大于生成bin文件大小) FLASH_UPDATE_SIZE 1  //存储更新相关数据所有FLASH大小,不需要改动....生成bin文件大小设置(该值需要大于生成bin文件大小,设置为4倍数) FLASH_UPDATE_SIZE 4  //存储更新相关数据所有FLASH大小,设置为4 FLASH_USERDATA_SIZE

    89810

    线上一个client连接失败报错

    //线上一个client连接失败报错// 今天下午,线上MySQL数据库出现了一个连接中断报错,大概报错内容如下: 200701 17:57:50 [Warning] Aborted connection...通信包大小由max_allowed_packet控制,最大可以设置成1GB,client默认值是16MB,server默认值是4MB。...调整max_allowed_packet值没有用处,再来调整net_buffer_length值试试,该值默认是16k,最大值为1MB,将它调大到32k,发现问题已经解决了。...执行完SQL语句后,结果缓冲区会自动缩小为net_buffer_length",这不就意味着max_allow_packet这个参数才是决定通讯包最终大小,为什么在我案例中,第一次调整了max_allowed_packet...就目前来看,调整max_allowed_packet和net_buffer_length是可以解决此类报错

    2.2K30

    Nginx 实战系列之二:Nginx 优化中在 Nginx 侧 和 Linux 系统侧必须要调整优化参数详细和最佳推荐配置

    原文链接,Nginx 实战系列之二:Nginx 优化中在 Nginx 侧 和 Linux 系统侧必须要调整优化参数详细和最佳推荐配置 Nginx 必须要调整优化参数 Nginx Server 侧必须要调整参数...: proxy_connect_timeout 60; proxy_send_timeout 60; proxy_read_timeout 60; Linux 系统侧必须要调整参数 网卡软中断绑定 Nginx...机器,一般都是独立机器,因此不建议采用默认 irqbalance 自动绑定,而是要设置 smp_affinity、smp_affinity_list 值来自动绑定。... > /proc/sys/net/ipv4/tcp_max_syn_backlog fs 文件描述符 • sys.fs.file-max • Linux 系统允许最大文件描述数,值大小主要和机器内存有关...,一般 32G 内存以上机器,一般推荐设置为 100w-300w。

    1.2K11

    Docker 日志自动轮转和清理配置

    设置 Docker 日志大小自动删除旧日志:通过配置 Docker 使用 json-file 日志驱动,同时使用 logrotate 工具,可以设置日志最大大小(例如100MB),并在达到该大小自动删除旧日志...步骤 1:配置 Docker 日志驱动 在 Docker 配置文件中,通常是 /etc/docker/daemon.json,可以指定使用 json-file 日志驱动并设置日志最大大小。...copytruncate:使用 copytruncate 选项避免中断正在写入日志文件。...如果一切正常,可以将其设置为定期自动运行: sudo logrotate -f /etc/logrotate.conf 现在,Docker 日志将根据配置定期轮转,并在达到指定最大大小时删除旧日志。...可以根据需要调整时间表。/usr/sbin/logrotate -f /etc/logrotate.conf 是运行 logrotate 命令。 保存配置文件。

    73110

    Grafana 监控面板绘制流程

    单调性中断(例如由于目标重启导致计数器重置)会自动调整。此外,计算外推到时间范围末端,允许缺失周期与范围时间段不完全对齐。 2....单调性中断(例如由于目标重启导致计数器重置)会自动调整。 2....b. bar:还可以调整类型、线宽、填充透明度、渐变模式、是否显示点等属性。 c. points:还可以调整大小等属性。 d....如下示例我们使用线,设置填充透明度为5%,从不显示点。 8. 在右侧 Axis 可以调整对应轴信息,包括标签、宽度、纵轴最小值、纵轴最大值等等,一般不需要调整。 9....至此,已经完成了对于 Panel 创建简单介绍,可以通过在 Dashboard 中拖拽 Panel 改变其位置,也可以通过拖拽 Panel 右下角来改变 panel 大小

    2.2K10

    你清楚如何动态调整动态调整corePoolSize与maximumPoolSize吗?

    前言 线程池ThreadPoolExecutor在运行过程中,业务并发量变动,需要不停服务调整线程池线程数,ThreadPoolExecutor支持动态调整corePoolSize与maximumPoolSize...; } 源码看出:线程池调节时直接设置corePoolSize与maximumPoolSize值 其中 workerCountOf(ctl.get()) 代表工作任务线程数,参考我博客JDK8线程池...-ThreadPoolExecutor源码解析 调大corePoolSize与maximumPoolSize,线程池运行过程中自动生效,线程池处理逻辑增强。...线程池调小corePoolSize与maximumPoolSize对当前正在执行任务没有影响。 调节队列大小 队列是不可以动态调整。...线程池队列初始化大小注意,不能动态调节,队列占用是堆内存,注意JVM内存大小与GC能力,尽量减小大对象存在。

    1.3K20

    JVM系列三:JVM参数设置、分析

    不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确选择不同GC策略,调整JVM、GC参数,可以极大减少由于GC工作,而导致程序运行中断方面的问题,进而适当提高...-Xmx 最大堆大小 物理内存1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms最小限制 -Xmn 年轻代大小(1.4or...设置持久代最大值 物理内存1/4 -Xss 每个线程堆栈大小 JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多线程...6出现参数选项 -XX:MaxGCPauseMillis 每次年轻代垃圾回收最长时间(最大暂停时间) 如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值....-XX:+UseAdaptiveSizePolicy 自动选择年轻代区大小和相应Survivor区比例 设置此选项后,并行收集器会自动选择年轻代区大小和相应Survivor区比例,以达到目标系统规定最低相应时间或者收集频率等

    1.7K60

    JVM参数设置、分析

    不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确选择不同GC策略,调整JVM、GC参数,可以极大减少由于GC工作,而导致程序运行中断方面的问题,进而适当提高Java程序工作效率...-Xmx 最大堆大小 物理内存1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms最小限制 -Xmn 年轻代大小(1.4or...JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多线程.但是操作系统对一个进程内线程数还是有限制...6出现参数选项 -XX:MaxGCPauseMillis 每次年轻代垃圾回收最长时间(最大暂停时间) 如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值....-XX:+UseAdaptiveSizePolicy 自动选择年轻代区大小和相应Survivor区比例 设置此选项后,并行收集器会自动选择年轻代区大小和相应Survivor区比例,以达到目标系统规定最低相应时间或者收集频率等

    12310

    Kubernetes 1.24:卷扩展现在是个稳定特性

    此功能允许 Kubernetes 用户,简单地编辑他们 PersistentVolumeClaim 对象,并在 PVC Spec 中指定新大小,Kubernetes 将使用存储后端自动扩展卷,并扩展...一旦更改了请求大小,观察 PVC status.conditions 字段,查看调整大小是否已完成。...通常,为了对可扩展卷提供某种程度控制,只有存储类 allowVolumeExpansion 参数设置为 true 动态调配 PVC 才是可扩展。...如果你扩展一个未使用 PersistentVolume,Kubernetes 会进行离线调整大小(而且,因为该卷未被使用,所以也不会中断工作负载)。...该行为已经改变,Kubernetes 尽力满足任何调整大小请求,而不管底层 PersistentVolume 卷是在线还是离线。

    57920

    从进程栈内存底层原理到Segmentation fault报错

    堆栈物理内存是什么时候分配? 堆栈大小限制是多大?这个限制可以调整吗? 当堆栈发生溢出后应用程序会发生什么? 如果你对以上问题还理解不是特别深刻,飞哥今天来带你好好修炼进程堆栈内存这块内功!...在加载时,会把前面准备进程栈地址空间指针设置到了新进程 mm 对象上。...这个限制可以调整吗? 进程堆栈大小限制在每个机器上都是不一样,可以通过 ulimit 命令来查看,也同样可以使用该命令修改。 至于开篇问题3,当堆栈发生溢出后应用程序会发生什么?...第三,当栈中存储超过 4KB 时候会自动进行扩大。不过大小要受到限制,其大小限制可以通过 ulimit -s来查看和设置。 注意,今天我们讨论都是进程栈。线程栈和进程栈有些不一样。...而真正物理内存是等到访问时候触发缺页中断,再从伙伴系统中申请。 问题二:堆栈大小限制是多大?这个限制可以调整吗?

    76520
    领券