*

User Defined Runtime Attributeについての覚書

公開日: : 最終更新日:2015/03/06 Tips , ,

UILabelに上下左右のパディングをつける方法を探して、結局「自分で以下のようなメソッドを持った拡張クラスを作る」という結論になりました。edgeTop, edgeLeft, edgeBottom, edgeRightはこのクラスに追加したプロパティです。

- (void)drawTextInRect:(CGRect)rect
{

    UIEdgeInsets insets = {self.edgeTop, self.edgeLeft, self.edgeBottom, self.edgeRight};
    
    return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}

次に、storyboardにこのクラスのラベルを設置した時にこれらのプロパティを設定したいとなるわけですが、IBではCustom Classの設定で設置したUILabelを別の(UILabelを継承した)クラスに差し替えることはできても、それだけではプロパティの設定ががIBの画面に出てこないわけなので、ちょっと困ってました。コード側で書くとかやりたくないですし・・・。

そこでなんかないかと調べたところ、Custom Classの下にある「User Defined Runtime Attribute」にプロパティの名前と値を入れておけば、きちんと反映されることがわかりました。

UserDefinedRuntimeAttribute

ハイライトしてる部分が設定したプロパティになります。
このプロパティを複数のコンポーネントにいちいち書くのも面倒なのですが、ハイライトした状態でコピー(Command+C)が可能なので、コピーしてペースト先のコンポーネントの(空の)User Defined Runtime Attributeをクリックしてからペースト(Command+V)すると、プロパティがペーストされるので、そこまで手間なくコンポーネントの設定ができました。

正直UILabelにedge設定があるのが理想で、こういうテクニックで乗り越えるのは好みではないのですが、UILabelの下に空のUIViewを置いて、edge分を考慮した透明背景のUILabelを置くみたいなテクニックよりはかなりマシだとは思います。

関連記事

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト)から横向き(ランドスケープ)

記事を読む

UICollectionViewが画面回転した時にレイアウトが崩れた時の対応

UICollectionViewCellのサイズを、内容に合わせて動的に変えた時に起こる問題に関して

記事を読む

Bitbucket課題の記法サンプル

Bitbucketの課題、およびwikiで利用できる記法についての記事です。 利用できる記法に

記事を読む

UITableViewのセクションヘッダをStoryboardで作る時の参考

UITableViewのセクションヘッダをカスタムして作る際に、セルと同様にプロトタイピングするため

記事を読む

iPadのUIModalPresentationFormSheetでキーボードが閉じない

iPadでUIModalPresentationFormSheet(全画面ではなく、中央にフロートし

記事を読む

UITableViewのヘッダに小文字を入れる

UITableViewのセクションヘッダをStoryboardでカスタマイズするという話題を以前掲載

記事を読む

ヒラギノ角ゴを使う

小ネタですが存外調べるのが面倒だった項目なので覚書しておきます。 ヒラギノ角ゴシック体を使うた

記事を読む

UIAlertControllerの取り扱い

旧聞ですが日本語版のStackOverflowが始動したようですね。 個人的な印象は「フィルタされ

記事を読む

iOS7でのPopover内サイズの指定

UIPopover内で表示する場合のViewControllerのコンテンツサイズ設定に関してのメモ

記事を読む

bitbucketをXcode5で使用する

bitbucketは無償で5人までの少人数チーム用のクローズド(非公開)リポジトリを作成できるため、

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage litera

Xcode11でのバージョン番号の取得方法

Xcode11になってバージョン番号をスクリプトから得て自動で更新する

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテ

→もっと見る

    PAGE TOP ↑