ios 使用Accounts.framework 实现facebook登录 2017年7月20日 | Leave a comment 问题: ios 使用Accounts.framework 怎么实现facebook登录 官方framework… Read More
ios AVAudioPlayer(data: d) 报错 NSOSStatusErrorDomain Code=1954115647 2017年7月11日 | Leave a comment 问题: AVAudioPlayer(data: d) 1 AVAudioPlayer(data: d) 报错 Error Domain=NS… Read More
iOS In-app purchase 基本流程备忘 2017年6月9日 | Leave a comment 问题: 解决: xcode target 属性启用 In-app purchase… Read More
推荐一些 iOS SceneKit 学习资源 2017年6月8日 | Leave a comment 问题: apple 开发者文档中的 <SceneKit Programming Guide> 太简… Read More
Blender 如何修改object 轴心点 2017年5月26日 | Leave a comment 问题: 解决: 切换成edit mode 然后移动物体,轴心点会在原来的位置 改好… Read More
如何绑定 gitbook 到 github 2017年5月19日 | Leave a comment 问题: 如何绑定 gitbook 到 github 解决: 在gitbook 指定书的首页 -&… Read More
ios swift项目中如何使用 FLEX 2017年5月18日 | Leave a comment 问题: FLEX 是facebook 推出的内嵌在app中的一款调试工具 根据说明直接把Class 复制添加到… Read More
layer 3d 效果 2017年5月18日 | Leave a comment 解决: 实现效果 import UIKit class ViewController: UIViewController { let width : Float = 100 var width_2 : Float { get{ return width / 2.0 } } override func viewDidLoad() { super.viewDidLoad() view.translatesAutoresizingMaskIntoConstraints = false // Do any additional setup after loading the view, typically from a nib. var t = CATransform3DIdentity.rotate(-Float.pi/4.0, 1, 0, 0).rotate(-Float.pi/4.0, 0, 1, 0) //.translate(200, 500, 0) //.rotate(Float.pi/4, 1, 0, 0) t.m34 = -1.0 / 500.0 view.layer.sublayerTransform = t let b0 = btn(i:0 , transform: CATransform3DIdentity.translate(0, 0, width_2), bgColor: UIColor.green) view.addSubview(b0) let b1 = btn(i:1 , transform: CATransform3DIdentity.translate(width_2, 0, 0).rotate(Float.pi/2, 0, 1, 0), bgColor: UIColor.blue) view.addSubview(b1) let b2 = btn(i:2 , transform: CATransform3DIdentity.translate(0, -width_2, 0).rotate(Float.pi/2, 1, 0, 0), bgColor: UIColor.orange) view.addSubview(b2) // let b3 = btn(i:3 , transform: CATransform3DIdentity.translate(0, width, 0).rotate(Float.pi/2, 1, 0, 0)) // view.addSubview(b3) // let b4 = btn(i:4 , transform: CATransform3DIdentity.translate(0, width, 0).rotate(Float.pi/2, 1, 0, 0)) // view.addSubview(b4) // let b5 = btn(i:5 , transform: CATransform3DIdentity.translate(0, width, 0).rotate(Float.pi/2, 1, 0, 0)) // view.addSubview(b5) } private func btn(i : Int , transform : CATransform3D, bgColor: UIColor) -> UIButton { let ret = UIButton(type: .custom) ret.setTitle("\(i)", for: .normal) ret.backgroundColor = bgColor ret.frame = CGRect(x: 0, y: 0, width: Int(width), height: Int(width)) ret.center = view.bounds.center ret.layer.transform = transform return ret } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension CATransform3D { func translate(_ tx:Float,_ ty:Float,_ tz:Float) -> CATransform3D{ let ret = CATransform3DTranslate(self, CGFloat(tx), CGFloat(ty), CGFloat(tz)) return ret } func rotate(_ angle:Float , _ x:Float,_ y:Float,_ z:Float) -> CATransform3D{ let ret = CATransform3DRotate(self, CGFloat(angle), CGFloat(x), CGFloat(y), CGFloat(z)) return ret } } extension CGRect { var center : CGPoint { get{ let x = origin.x + (size.width / 2.0) let y = origin.y + (size.height / 2.0) return CGPoint(x: x , y:y) } } } 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 import UIKit class ViewController: UIViewController { let width : Float = 100 var width_2 : Float { get{ return width / 2.0 } } override func viewDidLoad() { super.viewDidLoad() view.translatesAutoresizingMaskIntoConstraints = false // Do any additional setup after loading the view, typically from a nib. var t = CATransform3DIdentity.rotate(-Float.pi/4.0, 1, 0, 0).rotate(-Float.pi/4.0, 0, 1, 0) //.translate(200, 500, 0) //.rotate(Float.pi/4, 1, 0, 0) t.m34 = -1.0 / 500.0 view.layer.sublayerTransform = t let b0 = btn(i:0 , transform: CATransform3DIdentity.translate(0, 0, width_2), bgColor: UIColor.green) view.addSubview(b0) let b1 = btn(i:1 , transform: CATransform3DIdentity.translate(width_2, 0, 0).rotate(Float.pi/2, 0, 1, 0), bgColor: UIColor.blue) view.addSubview(b1) let b2 = btn(i:2 , transform: CATransform3DIdentity.translate(0, -width_2, 0).rotate(Float.pi/2, 1, 0, 0), bgColor: UIColor.orange) view.addSubview(b2)// let b3 = btn(i:3 , transform: CATransform3DIdentity.translate(0, width, 0).rotate(Float.pi/2, 1, 0, 0))// view.addSubview(b3)// let b4 = btn(i:4 , transform: CATransform3DIdentity.translate(0, width, 0).rotate(Float.pi/2, 1, 0, 0))// view.addSubview(b4)// let b5 = btn(i:5 , transform: CATransform3DIdentity.translate(0, width, 0).rotate(Float.pi/2, 1, 0, 0))// view.addSubview(b5) } private func btn(i : Int , transform : CATransform3D, bgColor: UIColor) -> UIButton { let ret = UIButton(type: .custom) ret.setTitle("\(i)", for: .normal) ret.backgroundColor = bgColor ret.frame = CGRect(x: 0, y: 0, width: Int(width), height: Int(width)) ret.center = view.bounds.center ret.layer.transform = transform return ret } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension CATransform3D { func translate(_ tx:Float,_ ty:Float,_ tz:Float) -> CATransform3D{ let ret = CATransform3DTranslate(self, CGFloat(tx), CGFloat(ty), CGFloat(tz)) return ret } func rotate(_ angle:Float , _ x:Float,_ y:Float,_ z:Float) -> CATransform3D{ let ret = CATransform3DRotate(self, CGFloat(angle), CGFloat(x), CGFloat(y), CGFloat(z)) return ret }} extension CGRect { var center : CGPoint { get{ let x = origin.x + (size.width / 2.0) let y = origin.y + (size.height / 2.0) return CGPoint(x: x , y:y) } }} … Read More
【转】渐进式jpeg(progressive jpeg)图片及其相关 2017年5月16日 | Leave a comment 转:http://www.ok12.net/html/about-baseline-jpg-and-progr… Read More
[转] swift header document 2017年5月15日 | Leave a comment [转] http://ericasadun.com/2015/06/14/swift-header-docum… Read More