swift storyboardで画面サイズに合わせたviewのconstraints
複数機種で綺麗にレイアウトしたい時、
それぞれの機種に対してstoryboardファイルを作るか、コードの中でガリガリやらなきゃいけないかと思っていたら、やり方があった。
- 親viewに対してEqual Height(width)を指定
- 画面サイズに合わせて伸縮する辺を親viewと一緒に選択状態にしてEqual Height(width)を指定
- 指定したconstarintsのmultiplierを指定(3:2、とか比率で)
- viewにaspect ratioを設定
- 表示したい縦横比をmultiplierに指定
これで画面サイズに合わせて大きさが決まるviewができる。
作ったアプリも直さないとなぁ...
swift ロケールから自分のタイムゾーンへ時刻変換
端末のロケールからユーザのタイムゾーンに時刻変換するメソッド。
func changeDateFormatM(dt_txt:String)->String{ var date_formatter: NSDateFormatter = NSDateFormatter() date_formatter.timeZone = NSTimeZone(name: "GMT") date_formatter.dateFormat = "yyyy/MM/dd HH:mm:ss" let tmpDate:NSDate = date_formatter.dateFromString(dt_txt)! let localeName = NSLocale.preferredLanguages().first as! String let myDateFormatter: NSDateFormatter = NSDateFormatter() myDateFormatter.dateFormat = "MM/dd" myDateFormatter.locale = NSLocale(localeIdentifier: localeName) var localeDate: NSString = myDateFormatter.stringFromDate(tmpDate) return localeDate as String }
日本は上手くいってるけど、もしかすると他国はダメかも...
ご参考に。
swift 標準マップの表示
純正マップになってから全然使ってないけど
ライセンスとかアクセスが制限されない(と思われる)ので
ちょっと使いたいぐらいなら良いかも
import UIKit import MapKit class SelectLocationViewController: UIViewController, MKMapViewDelegate { var lat = 0.0 var lon = 0.0 @IBOutlet weak var mapV: MKMapView! override func viewDidLoad() { super.viewDidLoad() mapV.delegate = self // 中心点の緯度経度. let myCoordinate: CLLocationCoordinate2D = CLLocationCoordinate2DMake(lat, lon) // 縮尺. let myLatDist : CLLocationDistance = 10000 let myLonDist : CLLocationDistance = 10000 // Regionを作成. let myRegion: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(myCoordinate, myLatDist, myLonDist); // MapViewに反映. mapV.setRegion(myRegion, animated: true) // Do any additional setup after loading the view. } // Regionが変更された時に呼び出されるメソッド. func mapView(mapView: MKMapView!, regionDidChangeAnimated animated: Bool) { }
swift 天気アプリ
先月までにと、自分的ノルマで作成してきたアプリを申請
取得した天気をスクロール形式で表示。
背景はひとつながりの草原で、
天気のよって暗さとかが変わるような仕様。
結局こんな感じで落ち着く。
審査が早く通れば良いなと。
にしても、
openWetherMapの天気情報は日本的には合わない感じ...。
地名も、知らない地名がよく出てきたり。
ナイトウボクジョウとは...
swift 文字列の一部を取得
javaだとsubsting()で考えるまでもないけど
swiftだと型の罠にハマったのでメモ。
let hh:String = (formatDate as NSString).substringWithRange(NSRange(location: 6,length: 2)) as String
substringWithRange()で指定部分を取得できるけど
型がNSStringにキャストしなきゃいけないということで。
CGFloatとDoubleの違いとか、
微妙な差に引っかかるのがswiftの嫌なところで。