C# (.NET) [закрытые] недостатки дизайна

Swift 4

    /// Takes the screenshot of the screen and returns the corresponding image
    ///
    /// - Parameter shouldSave: Boolean flag asking if the image needs to be saved to user's photo library. Default set to 'true'
    /// - Returns: (Optional)image captured as a screenshot
    open func takeScreenshot(_ shouldSave: Bool = true) -> UIImage? {
        var screenshotImage :UIImage?
        let layer = UIApplication.shared.keyWindow!.layer
        let scale = UIScreen.main.scale
        UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);
        guard let context = UIGraphicsGetCurrentContext() else {return nil}
        layer.render(in:context)
        screenshotImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        if let image = screenshotImage, shouldSave {
            UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
        }
        return screenshotImage
    }

Обновлено для Swift 2

Код, который вы предоставляете, работает, но не позволяет вы должны захватить NavigationBar и StatusBar на снимке экрана. Если вы хотите сделать снимок экрана вашего устройства, который будет включать в себя NavigationBar, вы должны использовать следующий код:

func screenShotMethod() {
    let layer = UIApplication.sharedApplication().keyWindow!.layer
    let scale = UIScreen.mainScreen().scale
    UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);

    layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let screenshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
}

С помощью этого кода:

  • При первом запуске приложения и вызове этого метода устройство iOS попросит вас сохранить ваше изображение в кадре камеры.
  • Результатом этого кода будет изображение .JPG.
  • В конечном изображении StatusBar не будет отображаться.
85
задан 3 revs, 3 users 57% 1 July 2015 в 18:58
поделиться

31 ответ

Я честно должен сказать, что в течение моих лет.NET (C#) программирование у меня нет дефектов в дизайне платформы, который я помнил; Означать, что в моем случае нет, вероятно, никаких дефектов, которые стоит помнить.

Однако существует что-то, что мне не понравились несколько лет назад, когда Microsoft выпускала XNA, они полностью сокращение их MDX, с 2.0 версиями, который сделал мои игры неиграемыми и не легкий просто преобразовать. Это - более широкий дефект и не имеет никакого отношения к платформе.NET.

платформа.NET на самом деле следует большому количеству Очень Хорошего руководства по проектированию, разработанного большой архитектурой языка высокого класса. Таким образом, я должен сказать, что я доволен.NET.

, Но сказать Вам что-то, что могло быть лучше, я должен буду жаловаться на Универсальную систему, я не нахожу Дженерики для Интерфейсов таким как, "где T является MyObj" (это не абсолютно правильный синтаксис. Однако эта часть, возможно, была сделана намного лучше и более ясной.

Предполагают иметь Интерфейс, который совместно используют 2 различных класса, если Вы хотите Общий метод в том интерфейсе, необходимо пробежаться через некоторые противные Дженерики-sytanx. Это мог бы просто быть я желающий сделать странный материал. Только незабываемая вещь для меня все же.

-1
ответ дан Filip Ekberg 24 November 2019 в 08:07
поделиться