[SublimeText]ファイルパスをコピー
ファイルパスをコピー
{ "keys": ["ctrl+shift+c"], "command": "copy_path" }
UITextFieldのクリアボタンの色を変える
extension UITextField { func setTintColorToClearButton(){ let anyobj:AnyObject? = self.valueForKey("_clearButton") if let anyobj:AnyObject = anyobj { if anyobj.isMemberOfClass(UIButton) { let button:UIButton = anyobj as UIButton if let image:UIImage = button.imageForState(.Highlighted) { let paintedImage:UIImage = image.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) button.setImage(paintedImage, forState: .Normal) button.setImage(paintedImage, forState: .Highlighted) } } } } }
self.textField.tintColor = UIColor.whiteColor() self.textField.setTintColorToClearButton()
メモリアドレス取得
func getMemoryAddress(target:AnyObject) -> String { return "\(unsafeAddressOf(target))" } let m1:String = self.getMemoryAddress(self.view1) let m2:String = self.getMemoryAddress(self.view2) println("mem:\(m1)") println("mem:\(m2)") println("m1 < m2 = \(m1 < m2)") println("m2 < m1 = \(m2 < m1)")
結果
mem:0x00007fe718c4da20 mem:0x00007fe718c42f20 m1 < m2 = false m2 < m1 = true
クラス判別
let button:UIButton = UIButton() let anyobj:AnyObject = button if anyobj.isKindOfClass(UIView) {//対象クラスのサブクラスでもtrue println("anyobj is kind of UIView") } if anyobj.isMemberOfClass(UIView) { println("anyobj is member of UIView") } if anyobj.isMemberOfClass(UIButton) { println("anyobj is member of UIButton") } if anyobj is UIView {//対象クラスのサブクラスでもtrue println("anyobj is UIView") } if anyobj is UIButton { println("anyobj is UIButton") }
結果
anyobj is kind of UIView anyobj is member of UIButton anyobj is UIView anyobj is UIButton
UIImageを染める
let image:UIImage? = UIImage(named: "input_iconTest") let iv:UIImageView = UIImageView(image:image!) iv.paintColor = "ff0000" self.view.addSubview(iv)
extension UIImageView { class func getUIColorByColorHex(colorHex:String) -> UIColor{ let colorScanner:NSScanner = NSScanner(string: colorHex) var color:UInt32 = 0 colorScanner.scanHexInt(&color) let r:CGFloat = CGFloat((color & 0xFF0000) >> 16) / CGFloat(255.0); let g:CGFloat = CGFloat((color & 0x00FF00) >> 8) / CGFloat(255.0); let b:CGFloat = CGFloat(color & 0x0000FF) / CGFloat(255.0); return UIColor(red: r, green: g, blue: b, alpha: 1.0) } var paintColor:String{ get{ return "" } set{ if self.image != nil { if newValue == "" { self.image = self.image!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal) }else{ self.tintColor = UIImageView.getUIColorByColorHex(newValue) self.image = self.image!.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) } } } } }
線を描く
let image:UIImage = self.getUIImageOfVerticalGrid(self.view.frame.size, start: 0.0, lineInterval: 10.0, lineThickness: 1.0, lineColorHex: "ff0000") let iv:UIImageView = UIImageView(image:image) iv.contentMode = UIViewContentMode.ScaleAspectFit iv.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height) self.view.addSubview(iv) func getUIImageOfVerticalGrid(size:CGSize, start:CGFloat=0.0, lineInterval:CGFloat=44.0, lineThickness:CGFloat=1.0, lineColorHex:String="D6D6D6") -> UIImage { return self.getUIImageOfGrid(false, size: size, start: start, lineInterval: lineInterval, lineThickness: lineThickness, lineColorHex: lineColorHex) } func getUIImageOfGrid(horizontal:Bool, size:CGSize, start:CGFloat=0.0, lineInterval:CGFloat=44.0, lineThickness:CGFloat=1.0, lineColorHex:String="D6D6D6") -> UIImage { let scale:CGFloat = UIScreen.mainScreen().scale UIGraphicsBeginImageContextWithOptions(size, false, 0.0) let context:CGContextRef = UIGraphicsGetCurrentContext() CGContextSetLineWidth(context, 0.0) let color:rgbTuple = self.getColorTupleByColorHex(lineColorHex) CGContextSetRGBStrokeColor(context, color.r,color.g,color.b, 1.0) CGContextSetRGBFillColor(context, color.r,color.g,color.b, 1.0) let w:CGFloat = (horizontal) ? size.width : lineThickness / scale let h:CGFloat = (horizontal) ? lineThickness / scale : size.height var currentPosition:CGFloat = start let maxPosition:CGFloat = (horizontal) ? size.height : size.width while currentPosition < maxPosition { let x:CGFloat = (horizontal) ? 0.0 : currentPosition let y:CGFloat = (horizontal) ? currentPosition : 0.0 CGContextFillRect(context, CGRectMake( x, y, w, h)) currentPosition += lineInterval } let image:UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } func getColorTupleByColorHex(colorHex:String, alpha:CGFloat=1.0) -> (r:CGFloat,g:CGFloat,b:CGFloat){ let colorScanner:NSScanner = NSScanner(string: colorHex) var color:UInt32 = 0 colorScanner.scanHexInt(&color) let r:CGFloat = CGFloat((color & 0xFF0000) >> 16) / CGFloat(255.0); let g:CGFloat = CGFloat((color & 0x00FF00) >> 8) / CGFloat(255.0); let b:CGFloat = CGFloat(color & 0x0000FF) / CGFloat(255.0); return (r: r, g: g, b: b) }
ステータスバーの文字色を変える
1) Info.plist
「View controller-based status bar appearance」を「NO」へ
2)viewDidLoadに下記コード
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
split
let t:String = "yyyy-MM-dd HH:mm:ss" //let tmp:[String] = split(t, {$0 == "-" || $0 == " " || $0 == ":"}) //この方法でもよい let tmp:[String] = split(t, {contains(["-"," ",":"],$0)}) println(tmp)
出力結果
[yyyy, MM, dd, HH, mm, ss]
rgbから16進数文字列取得
func getColorHexByColorTuple(color:(r:CGFloat,g:CGFloat,b:CGFloat)) -> String{ return NSString(format: "%02x%02x%02x", Int(color.r*255.0),Int(color.g*255.0),Int(color.b*255.0)) }