Рассмотрим частную функцию C _UICreateScreenUIImage
, которая возвращает моментальный снимок UIImage
текущего экрана устройства:
OBJC_EXTERN UIImage *_UICreateScreenUIImage(void) NS_RETURNS_RETAINED;
Я могу поместить это в заголовок моста и получить доступ к нему в Swift следующим образом:
MyApp-мост-header.h
@import UIKit;
UIImage *_UICreateScreenUIImage(void) NS_RETURNS_RETAINED;
MyClass.swift
let image = _UICreateScreenUIImage()
print(image) // <UIImage: 0x7fc4ba6081c0>, {375, 667}
Есть ли способ получить доступ к _UICreateScreenUIImage
в чистом Swift без использования заголовка моста?
Первоначальная мысль заключалась в том, чтобы создать расширение на UIImage
, но расширение ожидает, что я объявлю тело функции в расширении:
extension UIImage {
public func _UICreateScreenUIImage(_: Void) -> UIImage // "Expected '{' in body of function declaration"
}
Эта реализация в любом случае ошибочна, поскольку _UICreateScreenUIImage
не является методом на UIImage
.
Является ли доступ и доступ к этому методу в чистом Swift?
Люди, похоже, путают мой вопрос: "Как сделать снимок экрана?" Это не то, что я прошу. Я спрашиваю, как мне получить доступ к таким методам, как UIImage *_UICreateScreenUIImage(void);
в Swift. Это может быть любой частный метод, например +(UIImage *)_deviceSpecificImageNamed:(NSString *)name inBundle:(NSBundle *)bundle;
или +(UIImage *)_pu_PhotosUIImageNamed:(NSString *)name;
.