在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 中

//
//  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
}
}

相关内容

最新更新