【发布时间】:2019-06-11 16:49:42
【问题描述】:
在我的应用程序中,我使用了 QLPreviewController 来显示一些 pdf 文件。一切正常,但 QLPreviewController 的内容顶部有一个不需要的空间,无法找到删除它的方法。
这是我写的。(请注意,我是 Xamarin.iOS 和 QLPreviewController 的新手)
public partial class ReportsViewController : UIViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
//Customize navigation bar for QLPreviewController
if(UIDevice.CurrentDevice.CheckSystemVersion(11, 0)) // There is a bug with barTintColor on QLPreviewController for iOS 11 if you are showing it via presentViewController: animated:
{
var color = UIColor.FromRGB(red: 23, green: 61, blue: 86).CGColor;
var rect = new CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0);
var alpha = color.Alpha;
var opaque = alpha == 1;
UIGraphics.BeginImageContextWithOptions(rect.Size, opaque, 0);
var context = UIGraphics.GetCurrentContext();
context.SetFillColor(color);
context.FillRect(rect);
var image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
UINavigationBar.AppearanceWhenContainedIn(typeof(QLPreviewController)).SetBackgroundImage(image, UIBarMetrics.Default);
}
else // If iOS version is below 11.0
{
UINavigationBar.AppearanceWhenContainedIn(typeof(QLPreviewController)).BarTintColor = UIColor.FromRGBA(red: 255, green: 0, blue: 0, alpha: 1.0f);
}
UINavigationBar.AppearanceWhenContainedIn(typeof(QLPreviewController)).BarStyle = UIBarStyle.Black;
UINavigationBar.AppearanceWhenContainedIn(typeof(QLPreviewController)).TintColor = UIColor.White;
var reportSavedPath = "path to pdf file";
var reportName = "Report name";
var previewController = new QLPreviewController();
var url = new NSUrl(reportSavedPath, true);
var _dataSource = new PreviewControllerSource(this, url, reportName);
previewController.DataSource = _dataSource;
PresentViewController(previewController, true, completionHandler: null);
}
}
public partial class ReportsViewController : UIViewController
{
class PreviewControllerSource : QLPreviewControllerDataSource
{
ReportsViewController _parentClass = null;
NSUrl _url = null;
string _title = null;
public PreviewControllerSource(ReportsViewController parentClass, NSUrl url, string title)
{
_parentClass = parentClass;
_url = url;
_title = title;
}
public override nint PreviewItemCount(QLPreviewController controller)
{
return 1;
}
public override IQLPreviewItem GetPreviewItem(QLPreviewController controller, nint index)
{
return new PreviewItem { title = _title, url = _url };
}
}
public class PreviewItem : QLPreviewItem
{
public string title { get; set; }
public NSUrl url { get; set; }
public override string ItemTitle { get { return title; } }
public override NSUrl ItemUrl { get { return url; } }
}
}
这是加载 pdf 时的样子
有人可以帮我删除这个不需要的空间吗?
【问题讨论】:
-
您能否尝试不同尺寸的不同 PDF 文件,看看不需要的空间是否相同?另外,您在哪个 iOS 版本中遇到该错误?
-
@Saamer 我已经尝试过使用不同的 pdf。但空间仍然留给他们所有人。我正在使用 iOS 12.2
-
var rect = new CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0);如果将这些值降低到 0.1 会发生什么?
-
@Saamer 没用 :(
标签: c# xamarin.ios qlpreviewcontroller