忍者ブログ

Home > > IB不使用&オープンソースなiPadアプリ(テキストエディタ)を作る 第4回:Settings.bundleと色・サイズ・フォント変更

[PR]

  • 2024-05-02

Share on Tumblr このエントリーをはてなブックマークに追加

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Comments:

MTK 2011-06-28 (火) 15:35

大変役に立ちました。ありがとうございました。

Trackback+Pingback:

Listed below are links to weblogs that reference
[PR] from Born Neet

Home > > IB不使用&オープンソースなiPadアプリ(テキストエディタ)を作る 第4回:Settings.bundleと色・サイズ・フォント変更

Home > Edhita > IB不使用&オープンソースなiPadアプリ(テキストエディタ)を作る 第4回:Settings.bundleと色・サイズ・フォント変更

IB不使用&オープンソースなiPadアプリ(テキストエディタ)を作る 第4回:Settings.bundleと色・サイズ・フォント変更

Share on Tumblr このエントリーをはてなブックマークに追加

第4回。

今回は予定を変更して設定変更を実装します。
あまりにも文字が小さくて見づらいので。

超簡単なのでちゃっちゃと終わらせまーす。

参考

今回は、constの使い方について以下のサイトで勉強させていただきました。
結局使わなかったけど…。
svartalfheim.jp - Objective-Cについて

参考書籍は第1回をご参照下さい。

素材

引き続き、Soft * Accessory様の素材をお借りしています。

1. 設定画面の追加

設定画面はアプリ独自で持つこともできるのですが、
アップル的にはデフォルトの設定アプリの方に統一したいらしいので、
ここではそれに従います。

手順は以下のとおり。
XMLファイルを作るだけで画面作ってくれて非常に簡単です。

(1) 設定ファイルの作成

グループとファイルのResourcesを右クリック。
追加 → 新規ファイル → iPhone OS → Resouce → Settings Bundleを選択。
デフォルトのまま次へ進めば完了。
設定ファイルの作成

(2) 設定項目の作成

Resources内のRoot.plistを編集します。
今回はフォントや色・サイズを選択させるので、PSMultiValueSpecifierを使います。

完成したファイルがこちら。
※ fontはとりあえず使えるやつ全部を一覧化。
 sizeは10から50まで2刻みで用意してます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>StringsTable</key>
	<string>Root</string>
	<key>PreferenceSpecifiers</key>
	<array>
		<dict>
			<key>Type</key>
			<string>PSGroupSpecifier</string>
			<key>Title</key>
			<string>Color</string>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSMultiValueSpecifier</string>
			<key>Title</key>
			<string>Text Color</string>
			<key>Key</key>
			<string>textColor</string>
			<key>DefaultValue</key>
			<integer>0</integer>
			<key>Values</key>
			<array>
				<integer>0</integer>
				<integer>1</integer>
				<integer>2</integer>
				<integer>3</integer>
				<integer>4</integer>
				<integer>5</integer>
				<integer>6</integer>
				<integer>7</integer>
				<integer>8</integer>
				<integer>9</integer>
				<integer>10</integer>
				<integer>11</integer>
				<integer>12</integer>
				<integer>13</integer>
			</array>
			<key>Titles</key>
			<array>
				<string>Black</string>
				<string>DarkGray</string>
				<string>LightGray</string>
				<string>White</string>
				<string>Gray</string>
				<string>Red</string>
				<string>Green</string>
				<string>Blue</string>
				<string>Cyan</string>
				<string>Yellow</string>
				<string>Magenta</string>
				<string>Orange</string>
				<string>Purple</string>
				<string>Brown</string>
			</array>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSMultiValueSpecifier</string>
			<key>Title</key>
			<string>Background Color</string>
			<key>Key</key>
			<string>backgroundColor</string>
			<key>DefaultValue</key>
			<integer>3</integer>
			<key>Values</key>
			<array>
				<integer>0</integer>
				<integer>1</integer>
				<integer>2</integer>
				<integer>3</integer>
				<integer>4</integer>
				<integer>5</integer>
				<integer>6</integer>
				<integer>7</integer>
				<integer>8</integer>
				<integer>9</integer>
				<integer>10</integer>
				<integer>11</integer>
				<integer>12</integer>
				<integer>13</integer>
			</array>
			<key>Titles</key>
			<array>
				<string>Black</string>
				<string>DarkGray</string>
				<string>LightGray</string>
				<string>White</string>
				<string>Gray</string>
				<string>Red</string>
				<string>Green</string>
				<string>Blue</string>
				<string>Cyan</string>
				<string>Yellow</string>
				<string>Magenta</string>
				<string>Orange</string>
				<string>Purple</string>
				<string>Brown</string>
			</array>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSGroupSpecifier</string>
			<key>Title</key>
			<string>Font</string>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSMultiValueSpecifier</string>
			<key>Title</key>
			<string>Font Name</string>
			<key>Key</key>
			<string>fontName</string>
			<key>DefaultValue</key>
			<string>Helvetica</string>
			<key>Values</key>
			<array>
				<string>AcademyEngravedLetPlain</string>
				<string>AmericanTypewriter</string>
				<string>AmericanTypewriter-Bold</string>
				<string>AppleGothic</string>
				<string>Arial-BoldItalicMT</string>
				<string>Arial-BoldMT</string>
				<string>Arial-ItalicMT</string>
				<string>ArialHebrew</string>
				<string>ArialHebrew-Bold</string>
				<string>ArialMT</string>
				<string>ArialRoundedMTBold</string>
				<string>Baskerville</string>
				<string>Baskerville-Bold</string>
				<string>Baskerville-BoldItalic</string>
				<string>Baskerville-Italic</string>
				<string>BodoniOrnamentsITCTT</string>
				<string>BodoniSvtyTwoITCTT-Bold</string>
				<string>BodoniSvtyTwoITCTT-Book</string>
				<string>BodoniSvtyTwoITCTT-BookIta</string>
				<string>BodoniSvtyTwoOSITCTT-Bold</string>
				<string>BodoniSvtyTwoOSITCTT-Book</string>
				<string>BodoniSvtyTwoOSITCTT-BookIt</string>
				<string>BodoniSvtyTwoSCITCTT-Book</string>
				<string>BradleyHandITCTT-Bold</string>
				<string>Chalkduster</string>
				<string>Cochin</string>
				<string>Cochin-Bold</string>
				<string>Cochin-BoldItalic</string>
				<string>Cochin-Italic</string>
				<string>Copperplate</string>
				<string>Copperplate-Bold</string>
				<string>Courier</string>
				<string>Courier-Bold</string>
				<string>Courier-BoldOblique</string>
				<string>Courier-Oblique</string>
				<string>CourierNewPS-BoldItalicMT</string>
				<string>CourierNewPS-BoldMT</string>
				<string>CourierNewPS-ItalicMT</string>
				<string>CourierNewPSMT</string>
				<string>DBLCDTempBlack</string>
				<string>Didot</string>
				<string>Didot-Bold</string>
				<string>Didot-Italic</string>
				<string>Futura-CondensedExtraBold</string>
				<string>Futura-Medium</string>
				<string>Futura-MediumItalic</string>
				<string>GeezaPro</string>
				<string>GeezaPro-Bold</string>
				<string>Georgia</string>
				<string>Georgia-Bold</string>
				<string>Georgia-BoldItalic</string>
				<string>Georgia-Italic</string>
				<string>GillSans</string>
				<string>GillSans-Bold</string>
				<string>GillSans-BoldItalic</string>
				<string>GillSans-Italic</string>
				<string>Helvetica</string>
				<string>Helvetica-Bold</string>
				<string>Helvetica-BoldOblique</string>
				<string>Helvetica-Oblique</string>
				<string>HelveticaNeue</string>
				<string>HelveticaNeue-Bold</string>
				<string>HelveticaNeue-BoldItalic</string>
				<string>HelveticaNeue-Italic</string>
				<string>HiraKakuProN-W3</string>
				<string>HiraKakuProN-W6</string>
				<string>HiraMinProN-W3</string>
				<string>HiraMinProN-W6</string>
				<string>HoeflerText-Black</string>
				<string>HoeflerText-BlackItalic</string>
				<string>HoeflerText-Italic</string>
				<string>HoeflerText-Regular</string>
				<string>MarkerFelt-Thin</string>
				<string>MarkerFelt-Wide</string>
				<string>Optima-Bold</string>
				<string>Optima-BoldItalic</string>
				<string>Optima-Italic</string>
				<string>Optima-Regular</string>
				<string>Palatino-Bold</string>
				<string>Palatino-BoldItalic</string>
				<string>Palatino-Italic</string>
				<string>Palatino-Roman</string>
				<string>Papyrus</string>
				<string>PartyLetPlain</string>
				<string>STHeitiJ-Light</string>
				<string>STHeitiJ-Medium</string>
				<string>STHeitiK-Light</string>
				<string>STHeitiK-Medium</string>
				<string>STHeitiSC-Light</string>
				<string>STHeitiSC-Medium</string>
				<string>STHeitiTC-Light</string>
				<string>STHeitiTC-Medium</string>
				<string>SnellRoundhand</string>
				<string>SnellRoundhand-Bold</string>
				<string>Thonburi</string>
				<string>Thonburi-Bold</string>
				<string>TimesNewRomanPS-BoldItalicMT</string>
				<string>TimesNewRomanPS-BoldMT</string>
				<string>TimesNewRomanPS-ItalicMT</string>
				<string>TimesNewRomanPSMT</string>
				<string>Trebuchet-BoldItalic</string>
				<string>TrebuchetMS</string>
				<string>TrebuchetMS-Bold</string>
				<string>TrebuchetMS-Italic</string>
				<string>Verdana</string>
				<string>Verdana-Bold</string>
				<string>Verdana-BoldItalic</string>
				<string>Verdana-Italic</string>
				<string>ZapfDingbatsITC</string>
				<string>Zapfino</string>
			</array>
			<key>Titles</key>
			<array>
				<string>AcademyEngravedLetPlain</string>
				<string>AmericanTypewriter</string>
				<string>AmericanTypewriter-Bold</string>
				<string>AppleGothic</string>
				<string>Arial-BoldItalicMT</string>
				<string>Arial-BoldMT</string>
				<string>Arial-ItalicMT</string>
				<string>ArialHebrew</string>
				<string>ArialHebrew-Bold</string>
				<string>ArialMT</string>
				<string>ArialRoundedMTBold</string>
				<string>Baskerville</string>
				<string>Baskerville-Bold</string>
				<string>Baskerville-BoldItalic</string>
				<string>Baskerville-Italic</string>
				<string>BodoniOrnamentsITCTT</string>
				<string>BodoniSvtyTwoITCTT-Bold</string>
				<string>BodoniSvtyTwoITCTT-Book</string>
				<string>BodoniSvtyTwoITCTT-BookIta</string>
				<string>BodoniSvtyTwoOSITCTT-Bold</string>
				<string>BodoniSvtyTwoOSITCTT-Book</string>
				<string>BodoniSvtyTwoOSITCTT-BookIt</string>
				<string>BodoniSvtyTwoSCITCTT-Book</string>
				<string>BradleyHandITCTT-Bold</string>
				<string>Chalkduster</string>
				<string>Cochin</string>
				<string>Cochin-Bold</string>
				<string>Cochin-BoldItalic</string>
				<string>Cochin-Italic</string>
				<string>Copperplate</string>
				<string>Copperplate-Bold</string>
				<string>Courier</string>
				<string>Courier-Bold</string>
				<string>Courier-BoldOblique</string>
				<string>Courier-Oblique</string>
				<string>CourierNewPS-BoldItalicMT</string>
				<string>CourierNewPS-BoldMT</string>
				<string>CourierNewPS-ItalicMT</string>
				<string>CourierNewPSMT</string>
				<string>DBLCDTempBlack</string>
				<string>Didot</string>
				<string>Didot-Bold</string>
				<string>Didot-Italic</string>
				<string>Futura-CondensedExtraBold</string>
				<string>Futura-Medium</string>
				<string>Futura-MediumItalic</string>
				<string>GeezaPro</string>
				<string>GeezaPro-Bold</string>
				<string>Georgia</string>
				<string>Georgia-Bold</string>
				<string>Georgia-BoldItalic</string>
				<string>Georgia-Italic</string>
				<string>GillSans</string>
				<string>GillSans-Bold</string>
				<string>GillSans-BoldItalic</string>
				<string>GillSans-Italic</string>
				<string>Helvetica</string>
				<string>Helvetica-Bold</string>
				<string>Helvetica-BoldOblique</string>
				<string>Helvetica-Oblique</string>
				<string>HelveticaNeue</string>
				<string>HelveticaNeue-Bold</string>
				<string>HelveticaNeue-BoldItalic</string>
				<string>HelveticaNeue-Italic</string>
				<string>HiraKakuProN-W3</string>
				<string>HiraKakuProN-W6</string>
				<string>HiraMinProN-W3</string>
				<string>HiraMinProN-W6</string>
				<string>HoeflerText-Black</string>
				<string>HoeflerText-BlackItalic</string>
				<string>HoeflerText-Italic</string>
				<string>HoeflerText-Regular</string>
				<string>MarkerFelt-Thin</string>
				<string>MarkerFelt-Wide</string>
				<string>Optima-Bold</string>
				<string>Optima-BoldItalic</string>
				<string>Optima-Italic</string>
				<string>Optima-Regular</string>
				<string>Palatino-Bold</string>
				<string>Palatino-BoldItalic</string>
				<string>Palatino-Italic</string>
				<string>Palatino-Roman</string>
				<string>Papyrus</string>
				<string>PartyLetPlain</string>
				<string>STHeitiJ-Light</string>
				<string>STHeitiJ-Medium</string>
				<string>STHeitiK-Light</string>
				<string>STHeitiK-Medium</string>
				<string>STHeitiSC-Light</string>
				<string>STHeitiSC-Medium</string>
				<string>STHeitiTC-Light</string>
				<string>STHeitiTC-Medium</string>
				<string>SnellRoundhand</string>
				<string>SnellRoundhand-Bold</string>
				<string>Thonburi</string>
				<string>Thonburi-Bold</string>
				<string>TimesNewRomanPS-BoldItalicMT</string>
				<string>TimesNewRomanPS-BoldMT</string>
				<string>TimesNewRomanPS-ItalicMT</string>
				<string>TimesNewRomanPSMT</string>
				<string>Trebuchet-BoldItalic</string>
				<string>TrebuchetMS</string>
				<string>TrebuchetMS-Bold</string>
				<string>TrebuchetMS-Italic</string>
				<string>Verdana</string>
				<string>Verdana-Bold</string>
				<string>Verdana-BoldItalic</string>
				<string>Verdana-Italic</string>
				<string>ZapfDingbatsITC</string>
				<string>Zapfino</string>
			</array>
		</dict>
		<dict>
			<key>Type</key>
			<string>PSMultiValueSpecifier</string>
			<key>Title</key>
			<string>Font Size</string>
			<key>Key</key>
			<string>fontSize</string>
			<key>DefaultValue</key>
			<integer>16</integer>
			<key>Values</key>
			<array>
				<integer>10</integer>
				<integer>12</integer>
				<integer>14</integer>
				<integer>16</integer>
				<integer>18</integer>
				<integer>20</integer>
				<integer>22</integer>
				<integer>24</integer>
				<integer>26</integer>
				<integer>28</integer>
				<integer>30</integer>
				<integer>32</integer>
				<integer>34</integer>
				<integer>36</integer>
				<integer>38</integer>
				<integer>40</integer>
				<integer>42</integer>
				<integer>44</integer>
				<integer>46</integer>
				<integer>48</integer>
				<integer>50</integer>
			</array>
			<key>Titles</key>
			<array>
				<string>10</string>
				<string>12</string>
				<string>14</string>
				<string>16</string>
				<string>18</string>
				<string>20</string>
				<string>22</string>
				<string>24</string>
				<string>26</string>
				<string>28</string>
				<string>30</string>
				<string>32</string>
				<string>34</string>
				<string>36</string>
				<string>38</string>
				<string>40</string>
				<string>42</string>
				<string>44</string>
				<string>46</string>
				<string>48</string>
				<string>50</string>
			</array>
		</dict>
	</array>
</dict>
</plist>

ここまでで自動的に設定画面ができちゃいます。
設定画面

2. 設定変更の実装

さっき作った画面で設定した内容をアプリに反映させます。
今回の設定は全てTextViewに関するものなので、
DetailControllerのinit内で以下のように読み込み・設定しています。

		NSUserDefaults* settings = [NSUserDefaults standardUserDefaults];

		// defaultを設定してもnullが返ってくるので、0やNOがdefaultじゃない場合処理が必要。
		NSInteger textColor = [settings integerForKey:@"textColor"];
		NSInteger backgroundColor = [settings objectForKey: @"backgroundColor"] != NULL ? [settings integerForKey:@"backgroundColor"] : 3;
		NSString *fontName = [settings objectForKey: @"fontName"] != NULL ? [settings stringForKey:@"fontName"] : @"Helvetica";
		NSInteger fontSize = [settings objectForKey: @"fontSize"] != NULL ? [settings integerForKey:@"fontSize"] : 16;
				
		textView_.font = [UIFont fontWithName:fontName size:fontSize];
		textView_.textColor = [self getColorWithIndex:textColor];
		textView_.backgroundColor = [self getColorWithIndex:backgroundColor];

[完成]

できました。
設定反映後

[まとめ]

これで目を凝らして小さい字を読まなくても良くなりました。
今回は簡単だったので、次はもうちょっとプログラミングらしいことをやろうと思います。

[コード]

今回のコードは「Edhita4.zip」に入っています。
GitHubのdownloadページからダウンロードして下さい。

Downloads for tnantoka's Edhita - GitHub

PR

Comments:1

MTK 2011-06-28 (火) 15:35

大変役に立ちました。ありがとうございました。

Comment Form

Home > Edhita > IB不使用&オープンソースなiPadアプリ(テキストエディタ)を作る 第4回:Settings.bundleと色・サイズ・フォント変更

Search
Loading
Feeds
Links
スポンサードリンク

Page Top