最近の記録
AssociatedObjectOwnerでobjc_g(s)etAssociatedObjectを利用
AssociatedObjectOwnerの利用123456789101112131415161718class TestClass {}extension TestClass: AssociatedObjectOwner { private static var test1Key = 0 var test1: TestClass { get { getAssociatedObject(key: &TestClass.test1Key, initialObject: TestClass()) } set { setAssociatedObject(key: &TestClass.test1Key, object: newValue) } } private static var test2Key = 0 var test2: String { get { getAssociatedObject(key: &TestClass.test2Key, initialObject: "" ) } set { setAssociatedObject(key: &TestClass.test2Key, object: newValue) } }}
flutterでiosのtoday-extensionを作って見る
以下の方法はFlutter 1.17以上では動かなくなりました。
Soft-UI(Neumorphism)をSwiftで作って見る
1. Soft-UI(Neumorphism)とはNew skeuomorphismというUI designの新しいトレンドっぽいSoft-UI(Neumorphism)
Sign in with Apple実装
1. アプリのcapabilityでSign in with Apple を選択 Xcodeで選択
iosのAVPlayerでlive動画を最新に維持する方法
AVPlayer のautomaticallyWaitsToMinimizeStallingをNOにしても通信環境などによっては遅延が発生して再生される。そのときは直接seekToTime で最新にする 12double time = MAXFLOAT;[player seekToTime: CMTimeMakeWithSeconds(time, NSEC_PER_SEC)];
UITextViewタップ時にlinkかの確認
UITextViewでのタップがattributedTextでNSLinkAttributeNameを指定したリンク文のタップか確認 1234567891011
UITextViewのDragを無効にする
UITextViewのUITextDragDelegateのメッソド[textDraggableView: textDraggableView: itemsForDrag:dragRequest]で空配列を返すiOS10以下も対応中なら@available(iOS 11.0, *), NS_AVAILABLE_IOS(11.0) も追加 12345678910111213- (void)viewDidLoad{ [super viewDidLoad]; self.textView = [[UITextView alloc] initWithFrame:CGRectZero]; if (@available(iOS 11.0, *)) { self.textView.textDragDelegate = self; }}- (NSArray<UIDragItem *> *)textDraggableView:(UIView<UITextDraggable> *)textDraggableView itemsForDrag:(id<UITextDragRequest>)dragRequest NS_AVAILABLE_IOS(11.0){ return @[];}
Crashlyticsへの追加情報
Crashlyticsは入れておくだけでクラッシュ時のコールスタックが表示されるので調査に便利また追加情報も送信できる仕組みもある。 1. ユーザ情報を送る
Fabric、Crashlyticsでエラー
Fabricのフレームワーク自動更新とgitブランチ移動のタイミングがよくなかった場合などFabric、Crashlytics.frameworkがちゃんとあるのにエラーになる時の解決策
iOS9からの3D Touch実装の簡単メモ
3D Touchの種類 Home Screen Quick Actions Peek and Pop Force Properties