2015-11-26 2 views
0

Как я могу преобразовать изображение, чтобы оно выглядело как изображение? просто хочет достичь, как это преобразование работает для вращения IM, используя РАСШИРЕНИЯ UIImage, но вот все приобретаемое сейчас, просто новым в быстройUIImage 3Transform swift

public func imageRotatedByDegrees(degrees: CGFloat, flip: Bool) -> UIImage { 
    let radiansToDegrees: (CGFloat) -> CGFloat = { 
     return $0 * (180.0/CGFloat(M_PI)) 
    } 
    let degreesToRadians: (CGFloat) -> CGFloat = { 
     return $0/180.0 * CGFloat(M_PI) 
    } 

    // calculate the size of the rotated view's containing box for our drawing space 
    let rotatedViewBox = UIView(frame: CGRect(origin: CGPointZero, size: size)) 
    let t = CGAffineTransformMakeRotation(degreesToRadians(degrees)); 
    rotatedViewBox.transform = t 
    let rotatedSize = rotatedViewBox.frame.size 

    // Create the bitmap context 
    UIGraphicsBeginImageContext(rotatedSize) 
    let bitmap = UIGraphicsGetCurrentContext() 

    // Move the origin to the middle of the image so we will rotate and scale around the center. 
    CGContextTranslateCTM(bitmap, rotatedSize.width/2.0, rotatedSize.height/2.0); 

    // // Rotate the image context 
    CGContextRotateCTM(bitmap, degreesToRadians(degrees)); 

    // Now, draw the rotated/scaled image into the context 
    var yFlip: CGFloat 

    if(flip){ 
     yFlip = CGFloat(-1.0) 
    } else { 
     yFlip = CGFloat(1.0) 
    } 

    CGContextScaleCTM(bitmap, yFlip, -1.0) 
    CGContextDrawImage(bitmap, CGRectMake(-size.width/2, -size.height/2, size.width, size.height), CGImage) 

    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return newImage 
} 

dashboard

ответ

0

Вы должны использовать Core Animation с CATransform3D, и настроить преобразование, чтобы создать впечатление глубины. Что вы делаете, так это применить небольшое отрицательное значение (-1/200 является хорошей отправной точкой) к компоненту M34 матрицы преобразования. Вы можете использовать эфир для слоя каждого из ваших представлений или использовать CATransformLayer на суперслое, а затем добавить другие изображения в качестве подслоев слоя преобразования.

Это сложный, суетливый материал. Я не перепутал это время, поэтому я больше не помню мелких деталей, но этого должно быть достаточно, чтобы вы начали. Я предлагаю выполнить поиск на «перспективах iOS», «M34» и «CATransformLayer», чтобы узнать больше.

+0

BTW, есть очень классная сторонняя библиотека под названием iCarousel, которую вы, вероятно, могли бы использовать для создания эффекта, которым вы пользуетесь. Я не уверен, что он мог бы сделать такую ​​матрицу. Возможно, вам придется складывать 3 карусели друг на друга. –

+0

спасибо, ребята! –

Смежные вопросы