我想用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 中
//
// 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
}
}