AVCaptureSession Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Координирует сеанс записи.
[Foundation.Register("AVCaptureSession", true)]
[ObjCRuntime.Unavailable(ObjCRuntime.PlatformName.WatchOS, ObjCRuntime.PlatformArchitecture.All, null)]
[ObjCRuntime.Unavailable(ObjCRuntime.PlatformName.TvOS, ObjCRuntime.PlatformArchitecture.All, null)]
public class AVCaptureSession : Foundation.NSObject
type AVCaptureSession = class
inherit NSObject
- Наследование
- Атрибуты
Комментарии
Объект AVCaptureSession координирует запись видео- или аудиовхода и передает записанную информацию одному или нескольким выходным объектам. По мере того как линия iOS продвинулась вперед, различные устройства получили несколько устройств захвата (в частности, получили несколько камер). Разработчики приложений могут использовать DefaultDeviceWithMediaType(String) или DevicesWithMediaType(String), передав константы, определенные в AVMediaType.
Настройка записи состоит из задания Inputs свойств AVCaptureSessionи Outputs объекта . Обратите внимание, что возможно несколько AVCaptureInputs и AVCaptureOutputs. Например, для записи звука и видео можно использовать два входа захвата:
var session = new AVCaptureSession();
var camera = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Video);
var mic = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Audio);
if(camera == null || mic == null){
throw new Exception("Can't find devices");
}
var cameraInput = AVCaptureDeviceInput.FromDevice (camera);
//info.plist _must_ contain NSMicrophoneUsageDescription key
var micInput = AVCaptureDeviceInput.FromDevice (mic);
if(session.CanAddInput(cameraInput)){
session.AddInput(cameraInput);
}
if(session.CanAddInput(micInput)){
session.AddInput(micInput);
}
Обратите внимание, что разрешение на доступ к микрофону (а в некоторых регионах — к камере) должно быть предоставлено пользователем, требуя от разработчика добавить NSMicrophoneUsageDescription
в файл info.plist приложения.
Видео можно записать непосредственно в файл с помощью AVCaptureMovieFileOutput. Однако этот класс не имеет данных с возможностью отображения и не может использоваться одновременно с AVCaptureVideoDataOutput. Вместо этого разработчики приложений могут использовать его в сочетании с AVCaptureVideoPreviewLayer, как показано в следующем примере:
var layer = new AVCaptureVideoPreviewLayer (session);
layer.VideoGravity = AVLayerVideoGravity.ResizeAspectFill;
var cameraView = new UIView ();
cameraView.Layer.AddSublayer (layer);
var filePath = Path.Combine (Path.GetTempPath (), "temporary.mov");
var fileUrl = NSUrl.FromFilename (filePath);
var movieFileOutput = new AVCaptureMovieFileOutput ();
var recordingDelegate = new MyRecordingDelegate ();
session.AddOutput (movieFileOutput);
movieFileOutput.StartRecordingToOutputFile (fileUrl, recordingDelegate);
Разработчики приложений должны отметить, что функция StopRecording() является асинхронной; разработчики должны подождать, пока метод делегата не FinishedRecording(AVCaptureFileOutput, NSUrl, NSObject[], NSError) будет работать с файлом (например, перед сохранением его в альбоме "Фотографии" с SaveToPhotosAlbum(String, UIVideo+SaveStatus) помощью или WriteVideoToSavedPhotosAlbumAsync(NSUrl)).
public class MyRecordingDelegate : AVCaptureFileOutputRecordingDelegate
{
public override void FinishedRecording (AVCaptureFileOutput captureOutput, NSUrl outputFileUrl, NSObject [] connections, NSError error)
{
if (UIVideo.IsCompatibleWithSavedPhotosAlbum (outputFileUrl.Path))
{
var library = new ALAssetsLibrary ();
library.WriteVideoToSavedPhotosAlbum (outputFileUrl, (path, e2) =>
{
if (e2 != null)
{
new UIAlertView ("Error", e2.ToString (), null, "OK", null).Show ();
}
else
{
new UIAlertView ("Saved", "Saved to Photos", null, "OK", null).Show ();
File.Delete (outputFileUrl.Path);
}
});
}
else
{
new UIAlertView ("Incompatible", "Incompatible", null, "OK", null).Show ();
}
}
}
Разработчики приложений могут настроить один или несколько портов вывода для захваченных данных. Это могут быть все еще кадры, видеокадры с информацией о времени, примеры звука, файлы видео quicktime или их можно отрисовывать непосредственно на уровне CoreAnimation.
После настройки входных и выходных компонентов сеанса начинается фактическая обработка путем вызова StartRunning() метода .
void SetupCapture ()
/ configure the capture session for low resolution, change this if your code
// can cope with more data or volume
session = new AVCaptureSession () {
SessionPreset = AVCaptureSession.PresetMedium
};
// create a device input and attach it to the session
var captureDevice = AVCaptureDevice.DefaultDeviceWithMediaType (AVMediaType.Video);
var input = AVCaptureDeviceInput.FromDevice (captureDevice);
if (input == null){
Console.WriteLine ("No video input device");
return false;
}
session.AddInput (input);
// create a VideoDataOutput and add it to the sesion
var output = new AVCaptureVideoDataOutput () {
VideoSettings = new AVVideoSettings (CVPixelFormatType.CV32BGRA),
// If you want to cap the frame rate at a given speed, in this sample: 15 frames per second
MinFrameDuration = new CMTime (1, 15)
};
// configure the output
queue = new MonoTouch.CoreFoundation.DispatchQueue ("myQueue");
outputRecorder = new OutputRecorder ();
output.SetSampleBufferDelegateAndQueue (outputRecorder, queue);
session.AddOutput (output);
session.StartRunning ();
}
public class OutputRecorder : AVCaptureVideoDataOutputSampleBufferDelegate {
public override void DidOutputSampleBuffer (AVCaptureOutput captureOutput, CMSampleBuffer sampleBuffer, AVCaptureConnection connection)
{
try {
var image = ImageFromSampleBuffer (sampleBuffer);
// Do something with the image, we just stuff it in our main view.
AppDelegate.ImageView.BeginInvokeOnMainThread (delegate {
AppDelegate.ImageView.Image = image;
});
//
// Although this looks innocent "Oh, he is just optimizing this case away"
// this is incredibly important to call on this callback, because the AVFoundation
// has a fixed number of buffers and if it runs out of free buffers, it will stop
// delivering frames.
//
sampleBuffer.Dispose ();
} catch (Exception e){
Console.WriteLine (e);
}
}
UIImage ImageFromSampleBuffer (CMSampleBuffer sampleBuffer)
{
// Get the CoreVideo image
using (var pixelBuffer = sampleBuffer.GetImageBuffer () as CVPixelBuffer){
// Lock the base address
pixelBuffer.Lock (0);
// Get the number of bytes per row for the pixel buffer
var baseAddress = pixelBuffer.BaseAddress;
int bytesPerRow = pixelBuffer.BytesPerRow;
int width = pixelBuffer.Width;
int height = pixelBuffer.Height;
var flags = CGBitmapFlags.PremultipliedFirst | CGBitmapFlags.ByteOrder32Little;
// Create a CGImage on the RGB colorspace from the configured parameter above
using (var cs = CGColorSpace.CreateDeviceRGB ())
using (var context = new CGBitmapContext (baseAddress,width, height, 8, bytesPerRow, cs, (CGImageAlphaInfo) flags))
using (var cgImage = context.ToImage ()){
pixelBuffer.Unlock (0);
return UIImage.FromImage (cgImage);
}
}
}
}
Конструкторы
AVCaptureSession() |
Конструктор по умолчанию, который инициализирует новый экземпляр этого класса без параметров. |
AVCaptureSession(IntPtr) |
Конструктор, используемый при создании управляемых представлений неуправляемых объектов; Вызывается средой выполнения. |
AVCaptureSession(NSObjectFlag) |
Конструктор для вызова производных классов для пропуска инициализации и просто выделения объекта. |
Свойства
AutomaticallyConfiguresApplicationAudioSession |
Указывает, AVCaptureSession использует ли общий аудиосеанс приложения. |
AutomaticallyConfiguresCaptureDeviceForWideColor |
Возвращает или задает логическое значение, определяющее, должен ли сеанс автоматически использовать широкий цвет, если он доступен. |
Class |
Координирует сеанс записи. (Унаследовано от NSObject) |
ClassHandle |
Дескриптор для этого класса. |
DebugDescription |
Понятное для разработчика описание этого объекта. (Унаследовано от NSObject) |
Description |
Описание объекта , версия Objective-C ToString. (Унаследовано от NSObject) |
DidStartRunningNotification |
Константа уведомлений для DidStartRunning |
DidStopRunningNotification |
Константы уведомлений для DidStopRunning |
ErrorKey |
Представляет значение, связанное с константой AVCaptureSessionErrorKey. |
Handle |
Дескриптор (указатель) на представление неуправляемого объекта. (Унаследовано от NSObject) |
Inputs |
Входные данные для сеанса записи. |
Interrupted |
Был ли прерван сеанс. |
InterruptionEndedNotification |
Константы уведомлений для прерыванияEnded |
InterruptionReasonKey |
Получает ключ, который обращается к причине прерывания сеанса записи. |
InterruptionSystemPressureStateKey |
Координирует сеанс записи. |
IsDirectBinding |
Координирует сеанс записи. (Унаследовано от NSObject) |
IsProxy |
Координирует сеанс записи. (Унаследовано от NSObject) |
MasterClock |
Часы только для чтения, предоставляющие базу времени для синхронизации меток времени с нескольких устройств ввода. |
Outputs |
Выходные данные для сеанса записи. |
Preset1280x720 |
Представляет значение, связанное с константой AVCaptureSessionPreset1280x720. |
Preset1920x1080 |
Представляет значение, связанное с константой AVCaptureSessionPreset1920x1080 |
Preset320x240 |
Координирует сеанс записи. |
Preset352x288 |
Представляет значение, связанное с константой AVCaptureSessionPreset352x288. |
Preset3840x2160 |
Представляет значение, связанное с константой AVCaptureSessionPreset3840x2160. |
Preset640x480 |
Представляет значение, связанное с константой AVCaptureSessionPreset640x480. |
Preset960x540 |
Координирует сеанс записи. |
PresetHigh |
Представляет значение, связанное с константой AVCaptureSessionPresetHigh. |
PresetiFrame1280x720 |
Представляет значение, связанное с константой AVCaptureSessionPresetiFrame1280x720. |
PresetiFrame960x540 |
Представляет значение, связанное с константой AVCaptureSessionPresetiFrame960x540. |
PresetInputPriority |
Представляет значение, связанное с константой AVCaptureSessionPresetInputPriority. |
PresetLow |
Представляет значение, связанное с константой AVCaptureSessionPresetLow. |
PresetMedium |
Представляет значение, связанное с константой AVCaptureSessionPresetMedium. |
PresetPhoto |
Представляет значение, связанное с константой AVCaptureSessionPresetPhoto. |
RetainCount |
Возвращает текущее число удержания Objective-C для объекта . (Унаследовано от NSObject) |
Running |
Указывает, выполняется ли в данный момент сеанс записи. |
RuntimeErrorNotification |
Константа уведомлений для RuntimeError |
Self |
Координирует сеанс записи. (Унаследовано от NSObject) |
SessionPreset |
Предустановка сеанса. |
Superclass |
Координирует сеанс записи. (Унаследовано от NSObject) |
SuperHandle |
Дескриптор, используемый для представления методов в базовом классе для этого объекта NSObject. (Унаследовано от NSObject) |
UsesApplicationAudioSession |
Должен ли сеанс использовать общий аудиосеанс приложения. |
WasInterruptedNotification |
Константы уведомлений для WasInterrupted |
Zone |
Координирует сеанс записи. (Унаследовано от NSObject) |
Методы
AddConnection(AVCaptureConnection) |
Добавляет указанный захват |
AddInput(AVCaptureInput) |
Добавляет входные данные в сеанс записи |
AddInputWithNoConnections(AVCaptureInput) |
Добавляет указанный |
AddObserver(NSObject, NSString, NSKeyValueObservingOptions, IntPtr) |
Регистрирует объект для внешнего наблюдения (с помощью NSString keyPath). Наблюдаемые изменения отправляются в объектный ObserveValue(NSString, NSObject, NSDictionary, IntPtr) метод наблюдателя. (Унаследовано от NSObject) |
AddObserver(NSObject, String, NSKeyValueObservingOptions, IntPtr) |
Регистрирует объект для наблюдения извне (с помощью string keyPath). Наблюдаемые изменения отправляются в объектный ObserveValue(NSString, NSObject, NSDictionary, IntPtr) метод наблюдателя. (Унаследовано от NSObject) |
AddObserver(NSString, NSKeyValueObservingOptions, Action<NSObservedChange>) |
Регистрирует объект для наблюдения извне с помощью произвольного метода. (Унаследовано от NSObject) |
AddObserver(String, NSKeyValueObservingOptions, Action<NSObservedChange>) |
Регистрирует объект для наблюдения извне с помощью произвольного метода. (Унаследовано от NSObject) |
AddOutput(AVCaptureOutput) |
Добавляет выходные данные в сеанс записи. |
AddOutputWithNoConnections(AVCaptureOutput) |
Добавляет указанный |
AwakeFromNib() |
Вызывается после загрузки объекта из nib-файла. Переопределители должны вызывать base. AwakeFromNib(). (Унаследовано от NSObject) |
BeginConfiguration() |
Инициирует транзакцию для изменения конфигурации сеанса записи. |
BeginInvokeOnMainThread(Action) |
Координирует сеанс записи. (Унаследовано от NSObject) |
BeginInvokeOnMainThread(Selector, NSObject) |
Асинхронно вызывает указанный код в основном потоке пользовательского интерфейса. (Унаследовано от NSObject) |
Bind(NSString, NSObject, String, NSDictionary) |
Координирует сеанс записи. (Унаследовано от NSObject) |
Bind(String, NSObject, String, NSDictionary) |
Устаревшие..
Координирует сеанс записи. (Унаследовано от NSObject) |
BindingInfo(String) |
Устаревшие..
Координирует сеанс записи. (Унаследовано от NSObject) |
BindingOptionDescriptions(String) |
Устаревшие..
Координирует сеанс записи. (Унаследовано от NSObject) |
BindingValueClass(String) |
Устаревшие..
Координирует сеанс записи. (Унаследовано от NSObject) |
CanAddConnection(AVCaptureConnection) |
Возвращает значение |
CanAddInput(AVCaptureInput) |
Возвращает значение, указывающее, можно ли добавить заданные входные данные в сеанс. |
CanAddOutput(AVCaptureOutput) |
Возвращает значение, указывающее, можно ли добавить заданные входные данные в сеанс. |
CanSetSessionPreset(NSString) |
Поддерживает ли сеанс определенный набор предопределенных параметров записи. |
CommitConfiguration() |
Применяет атомарно все изменения конфигурации, внесенные в сеанс записи с момента BeginConfiguration(). |
CommitEditing() |
Координирует сеанс записи. (Унаследовано от NSObject) |
CommitEditing(NSObject, Selector, IntPtr) |
Координирует сеанс записи. (Унаследовано от NSObject) |
ConformsToProtocol(IntPtr) |
Вызывается для определения того, реализует ли этот объект указанный протокол. (Унаследовано от NSObject) |
Copy() |
Выполняет копирование базового объекта Objective-C. (Унаследовано от NSObject) |
DangerousAutorelease() |
Координирует сеанс записи. (Унаследовано от NSObject) |
DangerousRelease() |
Координирует сеанс записи. (Унаследовано от NSObject) |
DangerousRetain() |
Координирует сеанс записи. (Унаследовано от NSObject) |
DidChange(NSKeyValueChange, NSIndexSet, NSString) |
Указывает, что произошло изменение индексов для связи со многими. (Унаследовано от NSObject) |
DidChange(NSString, NSKeyValueSetMutationKind, NSSet) |
Координирует сеанс записи. (Унаследовано от NSObject) |
DidChangeValue(String) |
Указывает, что в указанном ключе произошло изменение. (Унаследовано от NSObject) |
Dispose() |
Освобождает ресурсы, используемые объектом NSObject. (Унаследовано от NSObject) |
Dispose(Boolean) |
Освобождает ресурсы, используемые объектом NSObject. (Унаследовано от NSObject) |
DoesNotRecognizeSelector(Selector) |
Указывает, что данный объект не распознает указанный селектор. (Унаследовано от NSObject) |
Equals(NSObject) |
Координирует сеанс записи. (Унаследовано от NSObject) |
Equals(Object) |
Координирует сеанс записи. (Унаследовано от NSObject) |
ExposedBindings() |
Координирует сеанс записи. (Унаследовано от NSObject) |
GetBindingInfo(NSString) |
Координирует сеанс записи. (Унаследовано от NSObject) |
GetBindingOptionDescriptions(NSString) |
Координирует сеанс записи. (Унаследовано от NSObject) |
GetBindingValueClass(NSString) |
Координирует сеанс записи. (Унаследовано от NSObject) |
GetDictionaryOfValuesFromKeys(NSString[]) |
Извлекает значения указанных ключей. (Унаследовано от NSObject) |
GetHashCode() |
Создает хэш-код для текущего экземпляра. (Унаследовано от NSObject) |
GetMethodForSelector(Selector) |
Координирует сеанс записи. (Унаследовано от NSObject) |
GetNativeField(String) |
Устаревшие..
Координирует сеанс записи. (Унаследовано от NSObject) |
GetNativeHash() |
Координирует сеанс записи. (Унаследовано от NSObject) |
Init() |
Координирует сеанс записи. (Унаследовано от NSObject) |
InitializeHandle(IntPtr) |
Координирует сеанс записи. (Унаследовано от NSObject) |
InitializeHandle(IntPtr, String) |
Координирует сеанс записи. (Унаследовано от NSObject) |
Invoke(Action, Double) |
Координирует сеанс записи. (Унаследовано от NSObject) |
Invoke(Action, TimeSpan) |
Координирует сеанс записи. (Унаследовано от NSObject) |
InvokeOnMainThread(Action) |
Координирует сеанс записи. (Унаследовано от NSObject) |
InvokeOnMainThread(Selector, NSObject) |
Синхронно вызывает указанный код в основном потоке пользовательского интерфейса. (Унаследовано от NSObject) |
IsEqual(NSObject) |
Координирует сеанс записи. (Унаследовано от NSObject) |
IsKindOfClass(Class) |
Координирует сеанс записи. (Унаследовано от NSObject) |
IsMemberOfClass(Class) |
Координирует сеанс записи. (Унаследовано от NSObject) |
MarkDirty() |
Повышает уровень обычного однорангового объекта (IsDirectBinding имеет значение true) в объект toggleref. (Унаследовано от NSObject) |
MutableCopy() |
Создает изменяемую копию указанного объекта NSObject. (Унаследовано от NSObject) |
ObjectDidEndEditing(NSObject) |
Координирует сеанс записи. (Унаследовано от NSObject) |
ObserveValue(NSString, NSObject, NSDictionary, IntPtr) |
Указывает, что значение указанного keyPath относительно данного объекта изменилось. (Унаследовано от NSObject) |
PerformSelector(Selector) |
Координирует сеанс записи. (Унаследовано от NSObject) |
PerformSelector(Selector, NSObject) |
Координирует сеанс записи. (Унаследовано от NSObject) |
PerformSelector(Selector, NSObject, Double) |
Вызывает селектор для текущего экземпляра и, если |
PerformSelector(Selector, NSObject, Double, NSString[]) |
Координирует сеанс записи. (Унаследовано от NSObject) |
PerformSelector(Selector, NSObject, NSObject) |
Координирует сеанс записи. (Унаследовано от NSObject) |
PerformSelector(Selector, NSThread, NSObject, Boolean) |
Координирует сеанс записи. (Унаследовано от NSObject) |
PerformSelector(Selector, NSThread, NSObject, Boolean, NSString[]) |
Координирует сеанс записи. (Унаследовано от NSObject) |
PrepareForInterfaceBuilder() |
Координирует сеанс записи. (Унаследовано от NSObject) |
RemoveConnection(AVCaptureConnection) |
Удаляет указанный объект |
RemoveInput(AVCaptureInput) |
Удаляет указанный источник входных данных. |
RemoveObserver(NSObject, NSString) |
Запрещает указанному наблюдателю получать дальнейшие уведомления об изменениях значений для указанного keyPath. (Унаследовано от NSObject) |
RemoveObserver(NSObject, NSString, IntPtr) |
Запрещает указанному наблюдателю получать дальнейшие уведомления об изменениях значений для указанного keyPath и контекста. (Унаследовано от NSObject) |
RemoveObserver(NSObject, String) |
Запрещает указанному наблюдателю получать дальнейшие уведомления об изменениях значений для указанного keyPath. (Унаследовано от NSObject) |
RemoveObserver(NSObject, String, IntPtr) |
Запрещает указанному наблюдателю получать дальнейшие уведомления об изменениях значений для указанного keyPath и контекста. (Унаследовано от NSObject) |
RemoveOutput(AVCaptureOutput) |
Удаляет указанные выходные данные. |
RespondsToSelector(Selector) |
Определяет, распознает ли данный объект указанный селектор. (Унаследовано от NSObject) |
SetNativeField(String, NSObject) |
Устаревшие..
Координирует сеанс записи. (Унаследовано от NSObject) |
SetNilValueForKey(NSString) |
Задает значение null для указанного ключа. (Унаследовано от NSObject) |
SetValueForKey(NSObject, NSString) |
Задает указанное значение свойства, указанного ключом. (Унаследовано от NSObject) |
SetValueForKeyPath(IntPtr, NSString) |
Конструктор, используемый при создании управляемых представлений неуправляемых объектов; Вызывается средой выполнения. (Унаследовано от NSObject) |
SetValueForKeyPath(NSObject, NSString) |
Задает значение свойства, доступ к которому можно получить с помощью пути к ключу. (Унаследовано от NSObject) |
SetValueForUndefinedKey(NSObject, NSString) |
Указывает на попытку записать значение в неопределенный ключ. Если значение не переопределено, вызывает исключение NSUndefinedKeyException. (Унаследовано от NSObject) |
SetValuesForKeysWithDictionary(NSDictionary) |
Задает значения этого объекта NSObject для значений в указанном словаре. (Унаследовано от NSObject) |
StartRunning() |
Запускает поток входных и выходных данных. |
StopRunning() |
Асинхронно останавливает поток входных и выходных данных. |
ToString() |
Возвращает строковое представление значения текущего экземпляра . (Унаследовано от NSObject) |
Unbind(NSString) |
Координирует сеанс записи. (Унаследовано от NSObject) |
Unbind(String) |
Устаревшие..
Координирует сеанс записи. (Унаследовано от NSObject) |
ValueForKey(NSString) |
Возвращает значение свойства, связанного с указанным ключом. (Унаследовано от NSObject) |
ValueForKeyPath(NSString) |
Возвращает значение свойства, доступ к которому можно получить с помощью пути к ключу. (Унаследовано от NSObject) |
ValueForUndefinedKey(NSString) |
Указывает на попытку чтения значения неопределенного ключа. Если значение не переопределено, вызывает исключение NSUndefinedKeyException. (Унаследовано от NSObject) |
WillChange(NSKeyValueChange, NSIndexSet, NSString) |
Указывает, что значения указанных индексов в указанном ключе будут изменены. (Унаследовано от NSObject) |
WillChange(NSString, NSKeyValueSetMutationKind, NSSet) |
Координирует сеанс записи. (Унаследовано от NSObject) |
WillChangeValue(String) |
Указывает, что значение указанного ключа изменится. (Унаследовано от NSObject) |
Методы расширения
ObjectDidBeginEditing(NSObject, INSEditor) |
Координирует сеанс записи. |
ObjectDidEndEditing(NSObject, INSEditor) |
Координирует сеанс записи. |
GetValidModes(NSObject, NSFontPanel) |
Координирует сеанс записи. |
ValidateToolbarItem(NSObject, NSToolbarItem) |
Координирует сеанс записи. |
GetDebugDescription(INSObjectProtocol) |
Координирует сеанс записи. |
AcceptsPreviewPanelControl(NSObject, QLPreviewPanel) |
Координирует сеанс записи. |
BeginPreviewPanelControl(NSObject, QLPreviewPanel) |
Координирует сеанс записи. |
EndPreviewPanelControl(NSObject, QLPreviewPanel) |
Координирует сеанс записи. |
GetAccessibilityCustomRotors(NSObject) |
Возвращает массив объектов, подходящих UIAccessibilityCustomRotor для |
SetAccessibilityCustomRotors(NSObject, UIAccessibilityCustomRotor[]) |
Задает массив объектов, подходящих UIAccessibilityCustomRotor для |