Доступ к частной функции UIKit без использования заголовка моста
Рассмотрим частную функцию C_UICreateScreenUIImage
, который возвращаетUIImage
снимок экрана текущего устройства:
OBJC_EXTERN UIImage *_UICreateScreenUIImage(void) NS_RETURNS_RETAINED;
Я могу поместить это в промежуточный заголовок и получить к нему доступ в Swift, например, так:
MyApp-Bridging-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);
в Свифте. Это может быть любой частный метод, такой как+(UIImage *)_deviceSpecificImageNamed:(NSString *)name inBundle:(NSBundle *)bundle;
или же+(UIImage *)_pu_PhotosUIImageNamed:(NSString *)name;
.