SwiftUI ってよくできてます。 次のような図形ってよくありそうでしょ? で、これがSwiftで書いたプログラム。 import SwiftUI struct Room: View { // まず、ルームを定義。 // セル数を与えられて、正方形数個でできた矩形領域を生成。 let roomColumn: In…
SwiftUIをさわり始めてから、10日ほどでしょうか。 何を作ろうかと考えてたら、本棚にナンプレ本が・・・ なぜか、ノーマルより、4X4、5X5や合体ナンプレの好きな私は、これをテーマに組み始めてしまいました。 まずはメニュー画面。 正方形ナンプレ5…
SwiftUIをターゲットに絞って、再出発。Apple Developer に swiftチュートリアルがあります。英語に悪戦苦闘しながら、なんとか食らい付いている次第です。不思議なことの一つ。 今まで、AppDelegate.swiftが始まりで(古いかも)、そこにはAppDelegateクラ…
諸般の事情によりブログ更新ができずにいましたが、再開することにしました。 今、ハマっているのは、「swiftUI」なるインターフェース。 初心にかえって、もう一度勉強してみたい。で、現在のところ。Xcode version 13.0swift の version ・・・ どこで見る…
実はハマりまくって、ブログ更新がおろそかに・・・そもそも、 Kotlinのクラスは、フィールドを持つことができません。(引用1) この一文が混乱の元になりました。じゃあ、フィールドって何?ってなると、Java解説本では クラスの内部の定義した変数をフィ…
Kotlin でお遊びしてて気づいた。 いつも Warningが表示されています。 何も手を加えていない最初のプログラムをコンパイルした時の結果がこれ。 勝手に作っておいて、どうしてコンパイラエラーなんか出すの! と、言っててもしょうがないので、原因を探ると…
Kotlinさわって、1週間。衝撃的だったのは、staticキーワードがないこと! まあ、static あるかないかで言語を分ければ、きっとないほうが多いのだろう。(調査する気はありません)ま、そこは、objectキーワードでなんとかしようかなと思ってますが、Kotli…
ふと、手にした本が、Kotlin書だったために、ブログの更新も忘れて、読みふけってました。 Kotlin使って見たいけど、Kotlinの情報は少ない。 私にとってもメリットは、javaーswift の差よりも、kotlinーswiftの差の方が近いのではというその一点だけだったの…
あるクラスの処理と同じことを別のクラスにも書くってよくありますよね。 2つや3つなら問題ないのでしょう。きっと。 昔、BASICをさわった人ならわかるでしょうが、GOSUBなんてキーワードがありました。今でも、クラス内の処理で関数を作って呼び出すのは…
最初は大丈夫だったんです。 TextFieldにbecomeFirstResponderを当てておくと、キーボードがでてきて、よかったって済ませてました。ところが・・・先ほどより、左の状態に! 何もいじってないし、実機でやると問題ない。iPad Airなどのシミュレータもちゃん…
またまた、小ネタですが。swiftにもjavaにもとても便利で、似た仕組みがあったので報告です。まず、Arrayの宣言!swift版 import UIKit class Team { // static でアクセスできるように変更 // ランナーの所属に関する処理 static private var lastId: Int =…
誰も教えない便利な技を自分で見つけて発信?ちょっと大げさでしょうか。 アプリ完成間際になって、色の調整とかってすることありますよね。あるいはサイズの調整とか、フォントいじったりとか。で、そんな時、どこだったかなと、あちこちのファイルを探しま…
Enum ってなくてもなんとかなりそうだけど、使うとプログラムが見易いですよね。さっそく、使っている場面を。swift版 LapTimeManager.swift(旧 Entrance.swift) class LapTimeManager: UIViewController { override func viewDidLoad() { // 設定 MySettin…
またまた、2日間くらい悩みまくりました。 私のアプリの場合、個人を "Runnerクラスのインスタンス"にして、それを束ねて、Arrayとする。この方向は間違っていないと思ってました。一般的なものでは、顧客クラスや社員クラスなどは同じような扱いなんだろう…
氏名入力をするために、スクロールビューのボタンから、氏名を入力する画面になっています。次に名前を登録のボタンを押したら、スクロールビューに名前が入り、全画面に戻るというのが私のシナリオですが・・・ なんということでしょう。 名前を登録ボタン…
ゲームでは、あんまり使わない、文字入力なんですが、これはもう本当にプロの人から見れば一笑に付されるようなことしていると思います。とりあえず、iPhoneでこんな画面を作りました。 左側のウインドウはスクロールビューで、氏名が入るとことなんですが、…
第20回で、setMarginsが使えない。みたいなことを書きましたが、凡ミスでした。setPadding も setMargins もちゃんとあるのですが、どこか見つけられなかっただけと言うお粗末な結論です。しかし、これは、きちんと書き留めなければいけないと言うことで、書…
アプリの画面が少しだけ前に進んでいます。 懸案だった横に長い氏名表示域を短くし、右側にエントリーされた選手名を表示するようにしました。 注目すべきは、タップした順に出場者が表示されている事で、なんとこれは自然になってしまったというjava の仕様…
何をしてるのか・・・ しかし、かっこいいから、時間を忘れてプログラムを改造中。元のプログラム。 if (entry) { setBackgroundColor(Color.argb(255,255,255,30)); } else { setBackgroundColor(Color.argb(255,200,200,200)); } こうなりました。 if (ent…
今まであんまり使ったことのない static キーワード。何かカウントするときとか便利だよ〜とかって、それくらいの知識だけで。 でも、これって、インスタンス作らんでも使えるやんってことで、ビューを作る情報が散乱してるのを集めてみることにしました。 i…
アプリ作る時って、やっぱりアプリ設定ファイルは作るんですよね? いい方法があるのかもしれないですが、私の場合は、settings クラスを作って、そこにアクセスして作っています。これが簡単な気がする。 なぜ、こんな話になっているとというと、とってもま…
スクロールビューに名前の入ったビューアイテムが乗っています。スクロールビューのタッチイベントは嫌なので、このビューアイテムにタッチイベントをセットすることにしました。私は、アマプログラマーなので、やれることだけしかしません。できるだけ難し…
ちょっと苦戦します。スクロールビューのタッチイベントの扱いって難しいですね。話は、少し前になりますが、Androidのスクロールビューは単一のレーアウトにまとめてのせるしか方法がなかったので、iOSとは同じ書き方ができませんでした。Androidの方にひと…
この連載を読んでいただき、ありがとうございます。「大発見やー」と自画自賛していることを書いてみたいと思いますが、もしかしたらそんなのは当たり前のことなのかもしれません。プロのプログラマーは隠してるんじゃないの?みたいに思えてきますが。まず…
前回、Runner クラスが便利そうだと書きましたが、進めているうちに、Runner クラスを統括していく、Team クラスがあるといいなと思いつき(私は常に思いつきでプログラムする・・・)、Team クラスを書いてみました。Androidの記録方法、SharedPreferences…
スクロールビューまで来て、はたと困りました。なぜなら、思いつくままにプログラムを書く癖があるので、後になってここはどうしようかと考えてしまうから。で、困った原因はというと、Runnerクラスってこのアプリの中心的存在なのに、いちいち消したり、フ…
ちょっと、イベントがあり、留守にしてました。 早速ですが、続きで、スクロールビューの設置。Android版で注意するべきことが一つあり、スクロールビューにのせることができるのは一つのオブジェクトになっているということです。なので、中に入れるレイア…
スクロールビューって、利用しない手はないのに、なかなかいいサンプルにお目にかかりません。ぜひぜひ参考にしてください。結構、教科書的に書けたように思います。プログラムは3つの部分に分かれます。 A:スクロールビューを呼び出すプログラム B:スク…
ボタンを貼り付けました。 と言っても、見た目だけです。 なぜかというと、以前はあったはずのsetMarginが出てこない。Viewを生成し、setMerginを使おうとしても出てこない・・・謎。 今回、左ボタンは、左側のマージンを指定、右ボタンは、右側のマージン指…
swift で ボタンを作ってみます。 // UIButton 2個、「メニューに戻る」「奏者選択終了」 // ボタンのサイズは共通 let buttonSize: CGSize = CGSize(width: myWidth*0.4, height: myWidth*0.1) let cancelButtonPoint: CGPoint = CGPoint(x: myWidth*0.07, …