iOS CGFloat для цикла рисования изображений

Я хочу нарисовать сетку, которая бы заполнила весь экран устройства iOS квадратами, которые образуют градиент, и это метод, который я вращаю:

static func getGradientImage(fromHue first_hue: CGFloat, toHue second_hue: CGFloat) -> UIImage{
        UIGraphicsBeginImageContextWithOptions(CGSize(width: SystemDefaults.screen.width, height: SystemDefaults.screen.height), false, 0)
        let context = UIGraphicsGetCurrentContext()

        let pixel: CGFloat = SystemDefaults.screen.height / 16
        let raw_cols: CGFloat = SystemDefaults.screen.width / pixel
        let cols = Int(raw_cols + 0.4) //Because for iPhone 4 this number is 10.666 and converting it to Int gives 10, which is not enough. It does not affect other screens.
        let width: CGFloat = SystemDefaults.screen.width / CGFloat(cols)

        for index in 0..<16{
            let mlt_row = CGFloat(16 - index)
            for idx in 0..<cols{
                let mlt_col = CGFloat((idx + 5) * (16 / cols))


                let rct = CGRect(x: CGFloat(idx) * width, y: CGFloat(index) * pixel, width: width, height: pixel) //That's where I think the problem is. Coordinates should be more even
                let hue = (first_hue * mlt_row + second_hue * mlt_col) / (mlt_row + mlt_col)
                let clr = UIColor(hue: hue, saturation: 0.85, brightness: 1, alpha: 1)

                CGContextSetFillColorWithColor(context, clr.CGColor)
                CGContextFillRect(context, rct)
            }
        }

        let result = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return result
    }

Проблема в том, что выходное изображение имеет крошечные линии между столбцами, и я предполагаю, что это потому, что width параметр является сложным CGFloat и система не может "переместить" следующий rct именно на это расстояние. И это потому, что, например, экран iPhone 5 не совсем 16/9, а скорее 16/9.(Что-то). Как мне нарисовать изображение, чтобы заполнить экран ровно 144 (для iPhone5) квадратов без линий между ними?

0 ответов

Другие вопросы по тегам