Rodhos Soft

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

UIKIT

UITextViewでAttributeTextが改行されない

let style = NSMutableParagraphStyle() style.lineBreakMode = .byWordWrapping してaddAttributeする。

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

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

translatesAutoresizingMaskIntoConstraints

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

Intrinsic Content Size

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

Stackの中のカスタムビュー

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

デフォルトのアイコン等

iOS Developerから取得できる。モック作成に使える。 https://developer.apple.com/design/resources/

文字横に画像

試行錯誤の結果次のようになった。 + (NSAttributedString *)backSymbol { UIImage *image = [UIImage imageNamed:@"backbutton"]; NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; attachment.image = image; NSMutableAttributedString …

iOS8の注意

UINavigationController.delegateがassignからweakになっている。 つまり、weakと思っていたらiOS8はassignになっているので注意。。orz

秒付きのDatePicker

秒まで指定できるUIPickerViewを作ってみた。 GitHub - KatagiriSo/RDDateAndTimes: dates, hours, minutes and second picker utility

拡大モード

iPhone6以降の対応をしていないと拡大モードになり引き伸ばされる。 プロジェクトファイルのLaunch Image等を設定する必要がある。qiita.com

Storyboardでモーダルの背景を半透明

iOS8以降かも呼び出し元で2つチェック 呼び出し先はOverCurrentContext CoverVertical そもそもモーダルでないと使えないので注意‥。

座標系の変更

以下のようにtargetViewがtargetViewに貼り付けられているビューから(scrViewへ)の変換ができる。 let point = self.scrView.convert(targetView.frame.origin, from: targetView.superview)

画面消えるタイミング

>|swift| if (self.isBeingDismissed || self.isMovingToParentViewController) { ... } |

カスタムメニュー

つかったことがないが。。 override func viewDidLoad() { super.viewDidLoad() UIMenuController.shared.arrowDirection = .right; UIMenuController.shared.menuItems = [UIMenuItem.init(title: "a", action: #selector(hello))] let r = CGRect(x: 0, y:…

カスタムビューのXCode表示

@IBDesignable class MyView: UIView { @IBInspectable var cornerRadius : CGFloat = 0.0; // Only override draw() if you perform custom drawing. // An empty implementation adversely affects performance during animation. override func draw(_ re…

UIWindow

自作アラートのような使い方ができる。 UIWindow.rootViewControllerを設定 UIWindow.windowLevelはノーマルかアラートの+幾つかを設定するとより前に出てくる。 UIWindow.makeAndVisibleで表示される。 参照を破棄してmakeAndVisibleで消える。

RootViewController

WindowのRootViewControllerをすげ替えるとUIViewControllerを変えられるがWindowにくっつけていたViewも消える。。orz。以下実験コード import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do a…

勉強中の幾つか

以下 ざっと確認中 カスタム遷移 iOS View Controllerプログラミングガイド: トランジションアニメーションをカスタマイズする 復元 iOS View Controllerプログラミングガイド: 状態を保存して復元する コンテナ iOS View Controllerプログラミングガイド: C…

カスタム遷移の流れ

animationControllerForPresentedController:presentingController:sourceController: UIKitが表示されたVCがtransitioningDelegateを持っていると聞いてくる。 そこで適切なアニメータを作って返す。 interactionControllerForPresentation 次にUIKitは操作…

UIViewControllerTransitioning

UIViewControllerContextTransitioning以外 UIViewControllerAnimatedTransitioning @protocol UIViewControllerAnimatedTransitioning <NSObject> - (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext; - (void)animateTransition:(id </uiviewcontrollercontexttransitioning></nsobject>

UIViewControllerContextTransitioning

UIViewControllerTransitioning.hのヘッダーに書いてあったUIViewControllerContextTransitioningのコメントの意訳をしてみます。 @protocol UIViewControllerContextTransitioning <NSObject> @property(nonatomic, readonly) UIView *containerView; @property(nonat</nsobject>…

色々

applicationProtectedDataDidBecomeAvailable でデータ保存ができるようになるタイミングが取れるiOS 7対応アプリを作るなら知っておきたい「UXを向上させるBackground Fetchの使い方」 #ios7yahoo|CodeIQ MAGAZINE wazanova.jp

UIApplication

UIApplicationはUIResponderのサブクラス。delegateはassign。以下は調査中 isIgnoringInteractionEventsはイベント無視keyWindowwindows idleTimerDisabled UIControlがあれするところisNetworkActivityIndicatorVisiblestatusBarStylestatusBarHiddenstatu…

UITableViewCellの透明

Storyboardで効かないことがiOS9で発生した。 コード上でセルのbackgroundColorにclearcolorを入れてやることで解決する。

Exitの使い方

戻りたい画面に @IBAction func returnScreen(segue:UIStoryboardSegue) { print("returnScreen"); } } みたいなのを書いておく、そうするとexitに出てくるのでボタンなどと接続すれば良い。

UIDeviceの回転

UIDeviceの回転は同じ回転方向だと設定しても何も起こらない。 また、UIDeviceOrientationとUIInterfaceOrientationは左右が逆。

Separator

UITableViewはSeparatorカラーが取得できる。

LayoutMargin

親のを引き継ぐかをまず決める必要がある。引き継がない場合はそう設定しないと反映されない。 self.preservesSuperviewLayoutMargins = false; self.layoutMargins = UIEdgeInsetsMake(0, 10, 0, 10);

画像をUIImageに

UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, [[UIScreen mainScreen] scale]); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context, 0, 0); CGContextScaleCTM(context, 1.0, 1.0); [self.layer rende…

連打防止

秒数をカウントしてやる。 class DoubleTap { var actionTime:Date? = nil let actionInterval:TimeInterval = 0.3 func check() -> Bool { if let actionTime = actionTime { if -actionTime.timeIntervalSinceNow < actionInterval { return false } } sel…