ラベル UIKit の投稿を表示しています。 すべての投稿を表示
ラベル UIKit の投稿を表示しています。 すべての投稿を表示

2015年2月11日水曜日

UIImageViewの角を丸くする方法

今回はUIImageViewの角を丸くする方法を紹介します。
まずはソースコードによる設定方法

  1. UIImageViewのプロパティ「clipsToBounds」にYESを設定する
  2. UIImageViewのプロパティ「layer」のプロパティ「cornerRadius 」に角丸の半径を設定する



次にストーリーボードを使った設定方法

  1. UIImageViewを選択して「Identity inspector」のメニューを表示する
  2. 「User Defined Runtime Attributes」にて「clipsToBounds」と「layer.cornerRadius」を追加して設定する


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

2014年5月1日木曜日

Xcodeでビルド時に「No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).」というエラーが出た時に行ったこと。

仕様変更対応で久しぶりにビルドしたら
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
ってエラーが発生してしまいました。
このエラーを修正するために次のことを行いました。


  1. ビルド対象のSchemeをチェックする
  2. Build SettingsのValid ArchitecturesにSchemeに対応したArchitectureが存在するか確認する。
  3. ビルド対象のSchemeが64-bit指定であるにも関わらずValid Architecturesにarm64が無かったので追加

[図解]

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

2014年2月23日日曜日

UIColorからrgbaを取得するときはCGColorGetComponentsを使いましょう

UIColorからrgbaを取得する際にUIColorクラスのインスタンスメソッド
- (BOOL)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha
を使用すると
rgbの値が同じ場合に限ってalpha値に0が設定されてしまいます。
例えば[UIColor whiteColor]のrgbaを取得した場合などです。
では正常な値を取得する為にはどうすればよいか、


const CGFloat *CGColorGetComponents(CGColorRef color)

を使用します。


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

2013年11月11日月曜日

iOS7からhidesBottomBarWhenPushedでタブバーが非表示にならない?

iOS7になって

self.hidesBottomBarWhenPushed = YES;

を記述してもなぜかタブバーが非表示になってくれないので
UITabBarControllerのviewDidLoadにて

self.tabBar.hidden = YES;

を記述してとりあえず対応しました。
画面単位の表示、非表示の切り換えとかどうしよう。。。

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

2013年1月25日金曜日

xcodeのストーリーボード(storyboard)で初期値設定を独自に追加する

ストーリーボードのattributes inspectorに表示されないプロパティやUIViewを継承して追加した独自のプロパティ等をストーリーボードから初期値設定したい場合は
identity inspectorUser Defined Runtime Attributes
に追加することで設定出来ます。
例)UIViewのexclusiveTouchを初期値YESに設定する


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

2012年11月12日月曜日

unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard

xcode4.5以降でUITableViewのdelegateメソッドが自動生成されると、このエラーが出る場合があります。
原因は

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{]
内に自動生成されたコードに
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

が記述されているからです。
このメソッドはiOS6.0以降でないと使用できません。
なのでiOS6.0未満も対応しているアプリではエラーとなってしまいます。

◎解決方法
従来の
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier; 
を使用するだけで解決します。

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

2012年11月2日金曜日

UIWebViewにJSONデータを渡す with jQuery

jQueryを使用すればUIWebViewにJSON形式のデータを読み込ませることが簡単にできます。
手順はこちら

  1. NSString型のJSONデータを用意する。
  2. UIWebViewのjavascript実行メッソッドを呼ぶ。
  3. jQueryのパースメソッドを使用して文字列型のJSONデータをオブジェクトに変換する。

◎各ステップのサンプル

◎ポイント

  1. 「NSString stringWithFormat:@"loadJSON('%@');",」の%@シングルクォーテーションで囲む。
このエントリーをはてなブックマークに追加

2012年5月7日月曜日

カメラロールのステータスバーを非表示にする

カメラロール(UIImagePickerController)のステータスバーを非表示にする方法を紹介します。やり方は
UIImagePickerControllerを継承してviewWillAppear内でステータスバーを非表示にする
です。
この方法でステータスバー非表示だけでなくナビバーを消したり、ツールバーを表示したり、いろいろカスタマイズできます。継承して拡張するってやつですね。
それではソースを見てみましょう。
◎ポイント
  1. オーバーライドしたviewWillAppear内でsuperのviewWillAppearを呼び出だしましよう。呼び出さないとスーパークラス(
    UIImagePickerController)のviewWillAppearが実行されなくなってしまいます。
このエントリーをはてなブックマークに追加

2012年4月20日金曜日

UIWebViewでiOSのシステムフォントを使いたいよ

ってことで
まぁheadタグでフォントに「Helvetica Neue」をしていすればよい訳です。
「Helvetica NeueUI」じゃないのか?!って思ったんですけど表示が変わりませんでした。
このエントリーをはてなブックマークに追加

2012年3月27日火曜日

UITextViewでキャレットの位置を先頭、後尾に移動する

UITextViewのキャレット位置を先頭に移動したり、後尾に移動するメソッドをつくりました。

@interface UITextView (extend)
// キャレット位置の設定
typedef enum {
    UICTextViewCaretPositionHead = 0, // 先頭
    UICTextViewCaretPositionTail  // 後尾
}UICTextViewCaretPositionType;
- (void)setCaretPosition:(UICTextViewCaretPositionType)_caretPositionType; 
@end
   
@implementation UITextView (extend)
- (void)setCaretPosition:(UICTextViewCaretPositionType)_caretPositionType
{
 // キャレットを移動する為の選択範囲情報
 const NSRange rangesAtCaretPosition[] = {
            {0, 0},     // 先頭
            {[self.text length], 0} // 後尾
           };
 // キャレットを移動
 self.selectedRange = rangesAtCaretPosition[_caretPositionType]; 

}

@end
  

※注目してほしいところ
  1. データとロジックを分けるという考え方に基づいて設計している。
  2. あれ?if文もswitch文も使われてないYO!
これanalyzeするとワーニングがでますね。orz


新しく記事を書いたよ
http://yskmanabe.blogspot.jp/2012/04/xcodeanalyze-interface-uitextview.html
このエントリーをはてなブックマークに追加

2012年2月19日日曜日

viewのx座標だけ、y座標だけ、widthだけ、heightだけ変更したい

UIViewのwidthだけ変更したいのに
@interface UIView (extend)
aView.frame = CGRectMake(aView.frame.origin.x, aView.frame.origin.y, 100, aView.frame.size.height);
@end
って書くのまんどくせー。
ってことで下記のようなUIViewの拡張メソッドを用意して使っています。

@interface UIView (extend)
- (void)setX:(NSInteger)x;
- (void)setY:(NSInteger)y;
- (void)setWidth:(NSInteger)width;
- (void)setHeight:(NSInteger)height;
- (void)setOrigin:(CGPoint)point;
- (void)setSize:(CGSize)size;
@end
 


#import "UIView+extend.h"


@implementation UIView (extend)



- (void)setX:(NSInteger)x

{

 self.frame = CGRectMake( x, self.frame.origin.y, self.frame.size.width, self.frame.size.height );

}

- (void)setY(NSInteger)y

{

 self.frame = CGRectMake( self.frame.origin.x, y, self.frame.size.width, self.frame.size.height );

}

- (void)setWidth:(NSInteger)width

{

 self.frame = CGRectMake( self.frame.origin.x, self.frame.origin.y, self, view.frame.size.height );

}

- (void)setHeight:(NSInteger)height

{

 self.frame = CGRectMake( view.frame.origin.x, view.frame.origin.y, view.frame.size.width, height );

}



- (void)setOrigin:(CGPoint)point {

 self.frame = CGRectMake(point.x, point.y, self.frame.size.width, self.frame.size.height);

}

- (void)setSize:(CGSize)size {

 self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, size.width, size.height);

}



- (void)setViewSizeHalf:(UIView*)view {

 view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width/2, view.frame.size.height/2);

}

@end
 

#import "Hoge.h"
#import "UIView+extend.h"

@implementation Hoge
- (id)init
{
 if (self = [super init]) {
  UIView *aView = [[[UIView alloc] init] autorelease];
  [aView setX:100];
 }
 return self;
}

@end
 
実績の無いソースコードなのでコピペじゃコンパイル通らないかもしれません。
このエントリーをはてなブックマークに追加

2012年2月17日金曜日

tabBarControllerに配置したnavigatioController内でviewControllerをpushした際にタブバーを非表示

タブターコントローラー(UITabBarController)に配置したナビゲーションコントローラー(UINavigatioController)内でviewControllerをpushした際にタブバー(tabbar)を非表示にするにはviewControllerのinitに下記コードを記述します。
-(id)init
{
 if( self=[super init] ){
  self.hidesBottomBarWhenPushed = YES;
 
 }
 return self;
}
 
ナビゲーションバー見たいにいつでも表示/非表示できないん?
このエントリーをはてなブックマークに追加