斯威夫特:旋转斜在iOS8上的一个按钮? [英] Swift: rotate oblique a button in iOS8?

查看:166
本文介绍了斯威夫特:旋转斜在iOS8上的一个按钮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

让我们说我有一个或多个100 * 50矩形按钮在我的ViewController。

Let's say I have one or more 100*50 rectangular buttons on my ViewController.

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.

但是!我需要他们斜不是水平的,即如果你有一个正方形,我需要旋转它是一个钻石(45°),这是相同的。
我知道它通过接口生成器是不可能的。如何通过code,使其?

BUT! I need them to be oblique not horizontal, I.E. if you have a square, I need to rotate it to be a diamond (45°), it's the same. I know it's not possible via interface builder. how to make it by code?

也许我应该用CGAffineTransformRotate或RotateTranform,但我真的不知道如何下手。

maybe I should use CGAffineTransformRotate or RotateTranform but I really don't know how to start

推荐答案

要为旋转视图层的最好方法,CGAffineTransformMakeTranslation表示层的地步层将绕,记得层从去(0,0)到(1.1),所以中间是(0.5,0.5):

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):

    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()

这篇关于斯威夫特:旋转斜在iOS8上的一个按钮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆