Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

セルの高さが自動設定されない

セルのコンテンツビュー内で高さと上下の設定をきちんといれてないとそうなる。

構造体を文字列としてみる

struct Hoge { let name:String let age:Int } extension String.StringInterpolation { mutationg func appendInterpolation(_ value: User) { appendInterpolation("Hoge's name is \(value.name) and he name is \(value.age)") } } としておいて、 let h…

translatesAutoresizingMaskIntoConstraints

自動でつける拘束条件をはずす。 translatesAutoresizingMaskIntoConstraints

Intrinsic Content Size

以下を呼んだメモ iOSのAutoLayoutにおけるIntrinsic Content Sizeについて - Qiita ビューを表示するための最低サイズ UIViewのプロパティとしてある。 読み取り専用だがオーバーライドはできる。 StoryBoard/XIBで一時的に設定できるがこの設定は実行時に…

変数の前の!!について

空白をチェックしているようだ。 javascriptで poge = {oiu:“”, hoge:“a”} !!poge.oiu -> false !!hoge -> true

pdfをepsにする

ひとまずこんな感じでやってみた。 #!/bin/bash # echo "$1" # 拡張子を除く BASE_FILE_NAME=`basename "$1" .pdf` # echo $BASE_FILE_NAME pdf2ps "$1" ps2eps ${BASE_FILE_NAME}.ps bashの参考 Bashの便利な構文だがよく忘れてしまうものの備忘録 - Qiita …

シュミレータでopenURL

dynamicLinkなどもこれで確かめられる。 xcrun simctl openurl booted https//hogehoge.page.link/***

Stackの中のカスタムビュー

Stack内でカスタムで作ったViewが縮む問題、以下で解決できた。 NSLayoutConstraint.activate( view.widthAnchor.constraint(equalToConstant: 320), view.heightAnchor.constraint(equalToConstant: 320) )

スキーム設定

スキーム追加 Product->Edit Schemeでduplicate Config追加 project file, Project, InfoタグのConfigurationで追加 スキームのエディットでrunを追加したConfigに設定 プリプロセッサ定義 prroject fileのBuild settingのPreprocessor Macroにそれぞれのコ…

passportでログイン情報が保存されてない。

routerにsessionをuseしていた。 appに対してsessionをuseする必要があった。

Mac brewでinstall時にplistでエラーになる

stackoverflow.com sudo chown -R $(whoami) $(brew --prefix)/*

フォント指定

stackoverflow.com 指定できるフォントを調べるには for family in UIFont.familyNames.sorted() { let names = UIFont.fontNames(forFamilyName: family) print("Family: \(family) Font names: \(names)") } フォントの指定は Text("acccdefああ投稿").fon…

UITextViewをSwiftUIで用いる。

makeUIView, updateUIView, makeCoordinatorを実装する。Coordinatorはdelegateを処理する。 import UIKit import Combine // https://www.appcoda.com/swiftui-textview-uiviewrepresentable/ struct EditView: UIViewRepresentable { @Binding var text: S…

簡単な画面遷移

WebからJSON取得して表示するリスト画面と設定画面の遷移をするっでもを作ってみた。 設定画面でwebから取得するかローカルファイルから取得するか選べる。 まずモデルは public struct Article: Codable { let title:String let url:String } という簡単な…

簡単なViewModel

ごく簡単にViewModelを作ってみた。 まずモデルは struct Article: Codable { let title:String let url:String } func fetchArticles() -> AnyPublisher<[Article], Error> { let url = URL(string: "https://qiita.com/api/v2/items")! let request = URLR…

combineの簡単な例

PassthroughSubject と CurrentValueSubject を使ってみた。おおよそRxSwift的に使えると思った。 func test() -> Void { let pub = PassthroughSubject<Int, Error>() _ = pub .sink(receiveCompletion: { _ in }) { value in print("new val -> \(value)") } pub.send(</int,>…

ファイル読み込みで一行毎に検索

import sys # 該当言語 searchWord = "hoge" # ファイル読み込み text = open(sys.argv[1], "r") # 一行づつ読み出し for line in text: # 該当単語があるなら書き出し if searchWord in line: print(line) # 閉じる text.close()

Combine

細かいことは無視してひとまず動かしてみる例を勉強してみた。 JSONを読み込む用のモデル struct Article: Codable { let title:String let url:String } 読み込む func fetchArticles() -> AnyPublisher<[Article], Error> { let url = URL(string: "https:…

UIKitとの連携

チュートリアルより。 UIPageViewControllerをSwiftUIで使う。 まず、使いたいUIViewControllerをwrapするクラスを作る。 そのクラスはUIViewControllerRepresentableを実装する。 import Foundation import SwiftUI import UIKit struct PageViewController…

編集画面をつくる

チュートリアルより まずプロフィールのデータ構造は struct Profile { var username: String var prefersNotifications: Bool var seasonalPhoto: Season var goalDate: Date // デフォルト設定 static let `default` = Self(username: "g_kumar", prefersN…

画面遷移をつける

チュートリアルより ホーム画面から遷移するコードを書く。 struct CategoryHome: View { // リストをcategory名をキーに辞書化している。 var categories: [String :[Landmark]] { Dictionary ( grouping: landmarkData, by: { $0.category.rawValue } ) } …

アニメーションをつける

チュートリアルより アニメーションは.animationで簡単につけられる。 .animation(nil)でアニメーションを切ることができる。 withAnimationを使うと、ブロック内にアニメーションがつけられる。 遷移時の遷移方法ははtransisionで指定できる。 transisionは…

アイコンを作る

チュートリアルより。 背景に6角形を描き、その上に山のシンボルを角度をかえてぐるっと8個放射状に配置する。ZStackを使って重ねている。 放射状に配置するのはForEachで、サイズをハードコーディングを避けるにはGeometryReaderを用いている。 ポイント…

パスで描く

チュートリアルより Pathで使う描画データ struct HexagonParameters { struct Segment { let useWidth: (CGFloat, CGFloat, CGFloat) let xFactors: (CGFloat, CGFloat, CGFloat) let useHeight: (CGFloat, CGFloat, CGFloat) let yFactors: (CGFloat, CGFl…

ボタンのタップや表示のフィルター

チュートリアルより。 まず、セルにスターの表示非表示をつける。 struct LandmarkRow: View { var landmark: Landmark var body: some View { HStack { landmark.image .resizable() .frame(width: 50, height: 50) Text(landmark.name) Spacer() if landma…

リスト表示

チュートリアルより まず静的なJSONのデータ [ { "name": "Turtle Rock", "category": "Featured", "city": "Twentynine Palms", "state": "California", "id": 1001, "park": "Joshua Tree National Park", "coordinates": { "longitude": -116.166868, "la…

Viewの配置例

import SwiftUI struct ContentView: View { @State var tapped = false var tap: some Gesture { TapGesture(count: 1) .onEnded({ _ in self.tapped = !self.tapped; }) } var circle : some View { Circle() .fill(self.tapped ? Color.red : Color.black…

UIKitをUIViewRepresentableで使う

makeUIViewとupdateUIViewを実装すれば良い。プレビューも効く。 import SwiftUI import MapKit struct MapView: UIViewRepresentable { func makeUIView(context:Context) -> MKMapView { MKMapView(frame: .zero) } func updateUIView(_ uiView: MKMapView…

カスタムイメージ

カスタムビューを作ることは簡単にできる。これは丸く切り取ったもの struct CircleImage: View { var body: some View { Image("turtlerock") .clipShape(Circle()) .overlay(Circle().stroke(Color.white)).shadow(radius: 10) } }

Hello, World

まず、もっとも簡単な使い方をしてみた。 @State var tapped = false var tap: some Gesture { TapGesture(count: 1) .onEnded({ _ in self.tapped = !self.tapped; }) } var circle : some View { Circle() .fill(self.tapped ? Color.red : Color.black) .…