简体   繁体   English

Swift:在iOS8中倾斜旋转按钮?

[英]Swift: rotate oblique a button in iOS8?

Let's say I have one or more 100*50 rectangular buttons on my ViewController. 假设我的ViewController上有一个或多个100 * 50矩形按钮。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib. 

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func myButton(sender: UIButton) {
    }

}

usually I put my graphic images as their image. 通常我将图形图像作为它们的图像。 then I apply auto layout. 然后我应用自动布局。

BUT! 但! I need them to be oblique not horizontal, IE if you have a square, I need to rotate it to be a diamond (45°), it's the same. 我需要它们倾斜而不是水平,即如果您有正方形,则需要将其旋转为菱形(45°),这是相同的。 I know it's not possible via interface builder. 我知道不可能通过界面生成器。 how to make it by code? 如何通过代码实现?

maybe I should use CGAffineTransformRotate or RotateTranform but I really don't know how to start 也许我应该使用CGAffineTransformRotate或RotateTranform,但我真的不知道如何开始

The best way to is rotate the views layer, CGAffineTransformMakeTranslation indicates the point in the layer where the layer will rotate around, remember layers go from (0,0) to (1.1) so the middle is (0.5, 0.5): 最好的方法是旋转视图图层,CGAffineTransformMakeTranslation指示图层将旋转的图层中的点,记住图层从(0,0)到(1.1),所以中间是(0.5,0.5):

    var transform = CGAffineTransformMakeTranslation(0.5, 0.5)
    var angle = CGFloat(M_PI / 2.0) //90 degress rotation
    transform = CGAffineTransformRotate(transform, angle)
    button.transform = transform

    button.layer.rasterizationScale = UIScreen.mainScreen().scale
    button.layer.shouldRasterize = true

    button.setNeedsDisplay()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM