[Swift] ライブアクティビティ(Live Activity)でできなかったこと3つ

# はじめに
ライブアクティビティ(Live Activity)にいくつかバグなのかわからないができないことが三つあった。調べてみると英語のものしか出てこなかったので、それらもまとめつつ、打開策も書いてみた。

# できなかったことたち
1. timerの謎の余白
2. Imageがボケる
3. ライトモードダークモード判定

# ちょっと宣伝
https://qiita.com/waiiioss/items/ecd9246cab3e72486e66

今回書いてる内容は↑を開発しているときに出てきたことである。


# 概要 & 打開策 or 解決策
## 1. timerの謎の余白
### 概要
左上のスクショのようにdynamic islandを作りたかった。テキストのtimerのところにText(OOOO, style: .timer)を使ってカウントアップするものにしたかった。いざ実装してみると、timerの右側に余白ができてしまい、レイアウトの調整ができなかった。

<img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/7b280322-b51d-f69a-0a64-a81827e243b2.png"><img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/61f8e286-19dc-1d1a-6132-40ee50966cb2.png"><img width=5%>

Liveactivityでは↓これを中心に持ってくるようにしたが、できなかった。spacer()とかalignmentが効かなかった。
``` swift 
Text(context.attributes.startTime, style: .timer)
```
<img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/5c23bd1f-50ac-3b23-81f0-ffd00333c641.png"><img width=5%>

[Text view with .timer style expands too much in Live Activity,Apple Developer Forum](https://forums.developer.apple.com/forums/thread/723316)

にも同じような問題が挙げっていた。おそらくLiveActivity側の問題なのかなあ、、
### 打開策
あえてtrailingに持っていっちゃう。spacer()とかalignmentとかを使ってもできず、multilineTextAlignmentを使う必要があった。
``` swift 
Text(context.attributes.startTime, style: .timer)
    .multilineTextAlignment(.trailing) //これを追加するとtrailingに行く
```
<--- Before　　　　　　　　　　　　　　　　　　　　　　　　　　　　　After--->
<img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/61f8e286-19dc-1d1a-6132-40ee50966cb2.png"><img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/be556335-9b4c-7126-f3af-3d7c08d32a61.png"><img width=5%>

まあ右に不自然な余白があるのに比べたら、いい感じにはなってるんじゃないかなと

### 参考
widgetでも同じような問題があるらしい。
https://forums.developer.apple.com/forums/thread/723316
https://forums.developer.apple.com/forums/thread/735125
https://stackoverflow.com/questions/66210592/widgetkit-timer-text-style-expands-it-to-fill-the-width-instead-of-taking-spa
何かしら解決策あれば教えていただきたい。

## 2. Imageがボケる
### 概要
* Dynamic Island
左で「シュッキン」のロゴを入れてるんだが、モザイクがかかってるような感じになった。

<img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/0469b3a2-d8e8-6e55-bebd-e52887f57a55.png"><img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/458cd31c-9b2e-82d3-5652-da35451152b5.png"><img width=5%>

* Live Activity
右のように「シュッキン」のロゴを入れてるんだが、モザイクがかかってるような感じになった。

<img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/5aab82e2-10fb-9eda-d380-a0fdf35eca91.png"><img width=5%><img width=42.5% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788759/f7e0f106-78f4-672c-9e22-cab16fc38a81.png"><img width=5%>

### 解決策
原因は画像がデカすぎたからだと思ったが、調べてもあんまりおなじことが起きてる記事を見つけることはできなかった。公式ドキュメント[Displaying live data with Live Activitie](https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities)で↓のように書かれてた。
"""
The system requires image assets for a Live Activity to use a resolution that’s smaller or equal to the size of the presentation for a device. If you use an image asset that’s larger than the size of the Live Activity presentation, the system might fail to start the Live Activity. For example, an image you use for the minimal presentation of your Live Activity shouldn’t exceed 45x36.67 points. For size guidance of Live Activity presentations, refer to Human Interface Guidelines > Live Activities.

Each Live Activity runs in its own sandbox, and — unlike a widget — it can’t access the network or receive location updates. To update the dynamic data of an active Live Activity, use ActivityKit in your app or allow your Live Activities to receive ActivityKit push notifications as described in Starting and updating Live Activities with ActivityKit push notifications.
"""
要は画像を小さくしろということ
小さくしたらすぐに解決した

## 3. ライトモードダークモード判定
### 概要
ライトモードダークモードで色を変えようとしたが、できなかった。
```swift
colorScheme == .dark ? Color.red : Color.blue
```
これが効かず、Color.redで常に表示される。

developer forumでは同じような問題が挙げられていた。
https://forums.developer.apple.com/forums/thread/720670
https://forums.developer.apple.com/forums/thread/717669

おそらくできないんだろうと理解した。そのうちできるようになるのか、、

### 打開策
ライトモードでもダークモードでも馴染むカラーにする。
LiveActivityは強調したいことだと思うからいっそのこと強気の色使いをする。
くらいかなと思い、シュッキンでは強気の色使いをすることにした。

# おわりに
まだ出たばっかだからか対応してないことも多いのか、調べるのが下手だったのか、
LiveActivityとかマイナー?な機能になると日本語での記事は全然なかった。