まだどこにもないアプリを作る

アプリ開発でつまづいたところなどを中心に記事にして行きます。

Dart アンラップのやり方(初心者)

Dart error: The argument type 'String?' can't be assigned to the parameter type 'String'. (argument_type_not_assignable at [] lib/pages/top_page.dart:43)

 

わたしはDart初心者です

 

上記のようなエラー

String? imagePath;

このように変数を定義して

その変数を使おうとしてときにこのエラーが出ました

その場合、

変数名の後ろに ! をつけることでエラーを防ぐことができます。

imagePath!

 

 

まあ多分これは一番簡易的な書き方なので

Nullチェックのやり方は他にもあると思います。

GoogleDart アンラップと検索してみてください。

あんまり検索結果なかったけど

flutter:Dart - undefined class 'Bool'

class Message{
String? message;
Bool? isMe;
DateTime? sendTime;

Message({this.message,this.isMe,this.sendTime});
}


このコードを書いたらこうエラーが出ました。
下記のようBoolのBを小文字にしたら解決しました

class Message{
String? message;
bool? isMe;
DateTime? sendTime;

Message({this.message,this.isMe,this.sendTime});
}


flutterでMLKITを使おうとした時のエラーCocoaPods could not find compatible versions for pod "google_ml_kit":  

google_ml_kitは2021/09/06現在 ios10以上でないと使えないようです?

 

まずflutterのプロジェクトのXcodeのプロジェクトを開きます↓

f:id:rils_k:20210906181346p:plain

白いのRunner..xcworkspaceを開く

なければRunner.xcdeprojを開く

 

 

ここからデプロイメントターゲットをiOS10以降にあげましょう

 

f:id:rils_k:20210906181115p:plain

 

f:id:rils_k:20210906181203p:plain

 

 

 

【iPhone知識・写真知識】iPhoneのパノラマアルバムに振り分けられる基準について

 

 

iPhone パノラマ画像 アルバム基準

 

iPhoneのデフォルトの写真アプリでは、パノラマの項目がありますよね。

 

パノラマ画像と認識される写真はこんなふうに

f:id:rils_k:20210726135311j:image

 

パノラマのことを表すひん曲がった四角形みたいなマークが出ます。

 

このマークがついていないとアルバム『パノラマ』に分類されないのです。

f:id:rils_k:20210726135600j:image

 

 

 

たまにパノラマ画像としてダウンロードしたのにこのマークがつかなくてパノラマアルバムに入ってないので少しもどかしく思った方いらっしゃるのではないでしょうか?

 

パノラマ写真の基準などをネットで探してもあまり情報が見つけられなかったので

 

今回はiPhoneのフォトライブラリでパノラマ写真に振り分けられる基準について、考えてみました。

 

 

まず結果を言います。

 

写真の大きさ

タテ : 802ピクセル以上必要

ヨコ : 2203ピクセル以上必要

タテとヨコの比率差 1.091 : 3以上の差が必要

(例えば1 : 3はOK     1.5 : 3はNG )

 

 

縦の方が長くても、横の方が長くても一定以上の比率差があればパノラマとして認識されます。

 

素人の計算なので完璧ではないと思いますが、だいたい合ってると思います。

 

 

ここからは一応の計測の過程を書いていきます。

 

ちなみにこれらのアプリを使って作業しました。

縦と横の比率(ピクセル数)確認 

PhoTop -画像のサイズを確認する, 画像圧縮

PhoTop -画像のサイズを確認する, 画像圧縮

  • JinPeng Wang
  • 写真/ビデオ
  • 無料

apps.apple.com

 

縦と横の比率を指定して切り取る

apps.apple.com

 

ピクセル数指定して写真の大きさを変える

Batch Resize

Batch Resize

  • Vitalij Schaefer
  • 写真/ビデオ
  • 無料

apps.apple.com

 

 

↓この画像はPixabayさんからダウンロードさせていただいたパノラマの画像です。

f:id:rils_k:20210726135743j:image

https://pixabay.com/ja/photos/パノラマ-パノラマ画像-雪-霜-3207076/

 

 

このページから7808×2000の大きさのこの画像をダウンロードしていただくとiPhoneのパノラマアルバムの中にこの画像が追加されると思います。

 

 

縦と横の比率

これは影響しているだろうと言う仮説のもと

縦の比率と横の比率を変えてみました。

 

↓この画像はパノラマ画像に分類はされませんでした。

f:id:rils_k:20210726140334j:image

大きさ2000×5362 比率 1.119 : 3

 

ーーー

 

↓この画像はパノラマ画像に分類されました。

f:id:rils_k:20210726140414j:image

大きさ2000×5677   比率は1.057 : 3

 

どうやらタテとヨコの比率のボーダーラインは1:3あたりにあるようです。

 

 

大きさ

 

縦と横の比率が1:3より差があってもなぜかパノラマアルバムには分類されない写真があります。

なんとなく解像度が低かったり写真が小さいようなものはパノラマとして認識されない感じがあったので、大きさで調べてみました。

 

縦と横の短い方の長さの基準

↓この写真ではパノラマとして認識されました。

f:id:rils_k:20210726160431j:image

801×4000

 

↓この写真ではパノラマとして認識されませんでした。

f:id:rils_k:20210726160443j:image

800×4000

 

 

なので短い方の長さのボーダーはから800pxと801pxの間くらいでした。

 

長い方の長さの基準

f:id:rils_k:20210726160718j:image

801×2203 パノラマ認識されました。

 

f:id:rils_k:20210726160734j:image

801×2202 ダメでした。

 

長い方のボーダーは2202と2203の間にありました。

 

 

過程のメモ↓

f:id:rils_k:20210726161452j:image

メモパッド一枚で足りるかなと思ったけど5枚も消費してしまいました。

私は数学0点取ったことあるくらい数学苦手なのでこんな感じです。

 

 

一応のまとめ

 

冒頭にも書きましたが、

 

写真の大きさ

タテ : 802ピクセル以上必要

ヨコ : 2203ピクセル以上必要

タテとヨコの比率差 1.091 : 3以上の差が必要

(例えば1 : 3はOK     1.5 : 3はNG )

 

縦の方が長くても、横の方が長くても一定以上の比率差があればパノラマとして認識されます。

 

 

 

 

 

お読みいただきありがとうございました。

何か公式で書いてあったり、もっと簡単に計算できるなどありましたらコメントなどよろしくお願い致します。

 

 

swift メモ備忘録 scrollViewの.zoomScaleでエラー

swift scrollViewの.zoomScaleでエラー

 

warning: could not execute support code to read Objective-C class data in the process. This may reduce the quality of type information available.

 

まだScrollViewが準備できていないときに

scrollView.zoomScaleで取得するとこのエラーが出る。

viewForZoomingの中で普通に取得するとエラーになってしまう。

ので

下記のようにDispatchQueue.main.asyncAfter(deadline: .now()+0.5) で遅延して取得すればなんかうまくいきます。

 

@objc func viewForZooming(in scrollView: UIScrollView) -> UIView? {

        

        DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {

            print(self.scrollView.zoomScale)

        }

}

 

 

Swift toolbarのbutton、barButtonItemをコードで書いているときに位置を調整する方法

hajihaji-lemon.com

 

こちらのサイト様を参考にさせていただきました。

 

flexible Spaceはよく目にすることも多いですが

今回のはfixedSpaceです。

下のコードだと

let flexibleItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace,

                                           target: nil, action: nil)

self.toolbarItems = [button1,flexibleItem,button2,flexibleItem,button3]

f:id:rils_k:20210718124113j:plain

 

このようにボタンが配置されます。

右が和と左のボタンもう少し端に寄って欲しいですよね。

 

 

そこでfixedSpaceを使います。固定スペースですね。

let fixedSpace = UIBarButtonItem(barButtonSystemItem: .fixedSpace,

                                           target: nil, action: nil)

fixedSpace.width = 3

self.toolbarItems = [fixedSpace,button1,flexibleItem,button2,flexibleItem,button3,fixedSpace]

するとfixedSpace.widthで指定した幅3pxだけの間隔を開けてくれるようになります。

f:id:rils_k:20210718124450j:plain

 

 

 

 

navigationController toolbarのbutton隙間なくす

navigationController toolbarのbutton間隔開ける 一定

barButtonItem 固定間隔 間隔 調整

 

 

 

swift メモ UIbuttonのisEnableプロパティはfalseにした後で、TargetActionをつけたらisEnableはTrueになる

UIbuttonのisEnableプロパティはfalseにした後で、TargetActionをつけたらisEnableはTrueになる

 

button.isEnabled = false

 

これをやった後に

 

button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)

 

をつけてしまうと

isEnable

が自動的にtrueになります。

 

注意です。