ios - 在 swift5 中:iPad 上的弹出窗口大小合适,但在 iPhone 上却使用全屏?
问题描述
我想显示一个带有 TextView 的弹出窗口,在 iPad 上它可以工作很长时间,但在 iPhone 上,弹出窗口会变成“全屏”——我不需要也不想要。我如何告诉 iPhone(如 iPad)它只能有 300 x 300 的区域?我发现了几个在 iPad 上都可以正常工作的示例,但它们都在胡说八道。我究竟做错了什么?(在真实设备上:iPhoneX、iPad2)
类NewPopupVCTextView:UIViewController,UITextFieldDelegate {
@IBOutlet weak var infoTextTextView: UITextView!
override var preferredContentSize: CGSize {
get {
if infoTextTextView != nil,
let presentingVC = presentingViewController {
setTextViewContent()
return infoTextTextView.contentSize
}
return super.preferredContentSize
}
set { super.preferredContentSize = newValue }
}
func setTextViewContent() {
infoTextTextView.text = sourceText
}
}
解决方案
在您的源视图控制器中
//
// ViewController.swift
// popOver
//
// Created by Lieng Hongky on 8/26/20.
// Copyright © 2020 Hongky. All rights reserved.
//
import UIKit
class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func openPopover(_ sender: Any) {
//MARK:====> instantiate the ViewController you want to be pop up
let popVC = UIStoryboard(name: "Main", bundle: .main).instantiateViewController(identifier: "popVC")
popVC.modalPresentationStyle = .popover
//MARK:====> set the source view for the pop up VC
popVC.popoverPresentationController?.sourceView = self.view
popVC.popoverPresentationController?.sourceRect = CGRect(origin: self.view.center, size: CGSize.zero)
//MARK:====>if you want to omit the arrow add this line of code
popVC.popoverPresentationController?.permittedArrowDirections = .init(rawValue: 0)
popVC.popoverPresentationController?.delegate = self
self.present(popVC, animated: true) {
}
}
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
}
推荐阅读
- java - Spring Data JPA:通过 json 属性查找
- verilog - 如何在 Verilog 中使用交换 32 位?示例:(位 0 复制到位置 31 位 31 复制到位置 0)
- python - 如何在 GPU 上安装 tensorflow-compression?
- vue.js - 我们可以在没有 SSR 的情况下使用 vue-meta 吗?
- javascript - 使用手机相机拍照
- javascript - html5画布在键码按下时移动ctx.arc
- java - JavaFX 使用带有循环的数组定期更新 UI
- javascript - 错误:ENOENT:没有这样的文件或目录,stat '/var/task/src/functions/public/home.html'
- express - Socket.io 回调不是函数错误
- c - 在 C 中将 char 转换为 int(cs50 中的信用)