Swiftにインクリメント(++)、デクリメント(--)を復活させる
Swift3でインクリメント、デクリメントが削除されました。
しかし、慣れ親しんだインクリメント、デクリメントを使いたい。
そんなわけで、Swift5にインクリメント、デクリメントを復活させます。
Swift3でインクリメント、デクリメントが削除されました。
しかし、慣れ親しんだインクリメント、デクリメントを使いたい。
そんなわけで、Swift5にインクリメント、デクリメントを復活させます。
ちょっとサーバーサイドSwiftをやってみたかったのでUbuntuにswiftenvを利用してSwiftの環境構築を行いました。
お手軽だったのでMacOS上にVagrantでUbuntuの環境を用意しました。
SwiftUIのActionSheetの選択肢を選んだ時の動作をどこに記述すればいいのかわからなかったので調べてみた。
import SwiftUI
struct ContentView: View {
@State private var isActionSheet = false // アクションシートの表示コントロール用
var body: some View {
Button(action: {
self.isActionSheet.toggle() // ボタンをタップした時に表示する様にする
}) {
Text("ActionSheet")
}
.padding()
.actionSheet(isPresented: $isActionSheet, content: {
ActionSheet(title: Text("select action"),
message: Text("SubTitle"),
buttons: [
.default(Text("Save"), action: {
print("Save") // この選択肢が選ばれた時の動作
}),
.destructive(Text("Delete"), action: {
print("Delete")
}),
.cancel() // アクションシートを閉じるだけ
])
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
ボタンを押した時にisShowActionSheetの値を切り替えてActionSheetの表示、非表示をコントロールしている。
SwiftUIで表示する画像の大きさを変更しようとした時にframeメソッドで大きさを指定してもリサイズできなかったので、変更方法を調べてみた。
自作のSwift製ライブラリをSwiftで用いられる主要なパッケージマネージャー(CocoaPods、Carthage、Swift Package Manager)に対応させるお話です。
画像をリサイズしてから保存、送信するケースが多いのでそのとき用のメモ
extension UIImage {
func resized(withPercentage percentage: CGFloat) -> UIImage? {
let canvas = CGSize(width: size.width * percentage, height: size.height * percentage)
return UIGraphicsImageRenderer(size: canvas, format: imageRendererFormat).image {
_ in draw(in: CGRect(origin: .zero, size: canvas))
}
}
func resized(toWidth width: CGFloat) -> UIImage? {
let canvas = CGSize(width: width, height: CGFloat(ceil(width/size.width * size.height)))
return UIGraphicsImageRenderer(size: canvas, format: imageRendererFormat).image {
_ in draw(in: CGRect(origin: .zero, size: canvas))
}
}
}
let image = UIImage(data: try! Data(contentsOf: URL(string:"http://i.stack.imgur.com/Xs4RX.jpg")!))!
let thumb1 = image.resized(withPercentage: 0.1)
let thumb2 = image.resized(toWidth: 72.0)
Xcode9・Swift4以降で動く
Pythonを普段使いする筆者がSwiftの文字列操作が覚えられそうにないと感じたので、SwiftでPythonと同等の文字列操作ができるライブラリを作りました。
Swiftのパッケージをコマンドラインから作成するときのメモ
Mac OS 10.14.5
Xcode Version 10.2.1
今回は、パッケージ名をexampleとしてみます。
先日、とある事情からSwiftで文字列の処理を書いていました。
その中で盛大にハマった事があったので忘れないようにメモ。
Swift 5.0.1
ここで取り扱う改行というのは以下の三つを指します。