今までVBはやったことありますが、XCODEとイメージが異なり
だいぶはまっています。
やりたいことは、オブジェクトの高さを変えたいだけで
VBのような高さのプロパティ(hight)があるようですが
(sizeタブのsize&positionのHですよね?)
コードの記載の仕方がわからず困っています。
質問もわかりにくいと思いますが、ご教授お願い致します
また、メソッドやプロパティ(VB的な表現で適切かわかりませんが)
がわかるようなわかりやすいリファレンスの本やサイトも
ありましたら教えてください。
コメント欄が未開放だったので、大した内容ではありませんが回答欄で再度失礼致します。
イベント時にサイズの変更をするのであれば、前記どおりUIオブジェクトが設置されている、UIViewのframeプロパティを変更すればOKです。
x座標、y座標、幅、高さを個別に変更したいのであれば、
myView.frame.origin.x = [x座標];
myView.frame.origin.y = [y座標];
myView.frame.size.width = [幅];
myView.frame.size.height = [高さ];
もし一括で座標とサイズを変更するのであれば、
CGRect newFrame = CGRectMake([x座標], [y座標], [幅], [高さ]);
myView.frame = newFrame;
*myViewは、サイズを変更したいUIオブジェクトを含むUIViewです。
例えば、ボタンがクリックされたら画像の入ったmyViewのサイズを倍にするというコードなら、
- (IBAction) buttonClick: (id) sender {
CGRect newFrame = CGRectMake(
myView.frame.origin.x,
myView.frame.origin.y,
myView.frame.size.width*2,
myView.frameoldFrame.size.height*2);
myView.frame = newFrame;
}
といった感じです。
* myViewには予め何らかのUIImageオブジェクトが含まれていると仮定する。
* myViewはパブリックプロパティとして定義されていると仮定する。
* buttonClickはパブリックメソッドであり、IB上にあるボタンのクリックイベントにリンク済みであると仮定する。
こういったUIViewの変更に関するサンプルであれば、IBを使っていないものがほとんどですが、
iPhone開発者エリアにある公式サンプルにもいくつかあったような・・・。
例えば思い出せるものだと、3つの違う色の正方形を指で動かして、重ねたり離したりするやつ。
http://developer.apple.com/iphone/library/samplecode/Touches/Int...
Classes/MyView.m
// Handles the start of a touch
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
...
if (firstPieceView.center.x == secondPieceView.center.x)
secondPieceView.center = CGPointMake(firstPieceView.center.x - 50, firstPieceView.center.y - 50);
...
}
このサンプルの上記タッチイベントで変更されているのはcentreプロパティ(中心の座標)ですが、
代わりにここでframeプロパティを変更すれば左上の座標とサイズが変更できるわけです。
ただ、僕が説明しているのはUI系のオブジェクトを使った場合になります。
もし本格的にOpenGLなどを使ってCGを作成するのであれば、
iPhoneではやったことがないのでちょっと僕には分かりませんね・・・。
Interface Builderを用いた編集だとオブジェクトをドラッグするだけだと思うのですが
実際に触ったことがないので間違ってるかもしれません。
iPhoneアプリ入門 (View編)
https://sites.google.com/a/gclue.jp/iphone-app-docs/iphoneapurin...
iPhone SDK 日本語ドキュメント
回答ありがとうございます。
質問がわかりにくくすいません。
コードの記載がわからないだけです。
たしかに全てのドキュメントを見れば解決できるかもしれませんが
質問に対しての回答になっていません。
直接の回答にならないかも知れないので、ポイント0で結構です。
goobeeさんが仰るように、IBを使うのであれば(むしろ今後アップデートを出す予定があるのであれば使うべき)マウス操作で変更できますよ。
サイズの変更などをランタイムで行う場合のみ、コード上でUIObjectのframeプロパティにアクセスすることになると思います。
基本的に、CocoaのUIObjectはUIViewの中に設置することで、そのframeプロパティを通して座標とサイズを定義できます。例えば、
myView.frame.origin.x = [x座標];
myView.frame.origin.y = [y座標];
myView.frame.size.width = [幅];
myView.frame.size.height = [高さ];
もしくは、
CGRect newFrame = CGRectMake([x座標], [y座標], [幅], [高さ]);
myView.frame = newFrame;
省略するなら、
myView.frame = CGRectMake([x座標], [y座標], [幅], [高さ]);
http://developer.apple.com/iphone/library/documentation/UIKit/Re...
http://dosiphone.com/iphone/tag/cgrect/
URLは適当に引っ張ってきたものです。
質問があればコメント欄を空けておいて下さい。
答えられる範囲でお教えしますので。
回答ありがとうございました。
どうやらIBを使用せずに全てコーディングするように伝わってしまったようですね。
すいませんでした。
やりたいことは、アプリが動作している状態でオブジェクトのサイズを変えたいということです。
なのでIBでレイアウトを作成し、アプリ起動中のイベント(Action)でサイズを変えるように
できれば良いと思いますが。。。できますか?
例えば、ボタンをIBで2つ(AとB)を配置して
アプリ起動中にAボタンを押下すると、Bのボタンの高さが変わるような
できればサンプルソースとかがあれば助かります。
コメント欄が未開放だったので、大した内容ではありませんが回答欄で再度失礼致します。
イベント時にサイズの変更をするのであれば、前記どおりUIオブジェクトが設置されている、UIViewのframeプロパティを変更すればOKです。
x座標、y座標、幅、高さを個別に変更したいのであれば、
myView.frame.origin.x = [x座標];
myView.frame.origin.y = [y座標];
myView.frame.size.width = [幅];
myView.frame.size.height = [高さ];
もし一括で座標とサイズを変更するのであれば、
CGRect newFrame = CGRectMake([x座標], [y座標], [幅], [高さ]);
myView.frame = newFrame;
*myViewは、サイズを変更したいUIオブジェクトを含むUIViewです。
例えば、ボタンがクリックされたら画像の入ったmyViewのサイズを倍にするというコードなら、
- (IBAction) buttonClick: (id) sender {
CGRect newFrame = CGRectMake(
myView.frame.origin.x,
myView.frame.origin.y,
myView.frame.size.width*2,
myView.frameoldFrame.size.height*2);
myView.frame = newFrame;
}
といった感じです。
* myViewには予め何らかのUIImageオブジェクトが含まれていると仮定する。
* myViewはパブリックプロパティとして定義されていると仮定する。
* buttonClickはパブリックメソッドであり、IB上にあるボタンのクリックイベントにリンク済みであると仮定する。
こういったUIViewの変更に関するサンプルであれば、IBを使っていないものがほとんどですが、
iPhone開発者エリアにある公式サンプルにもいくつかあったような・・・。
例えば思い出せるものだと、3つの違う色の正方形を指で動かして、重ねたり離したりするやつ。
http://developer.apple.com/iphone/library/samplecode/Touches/Int...
Classes/MyView.m
// Handles the start of a touch
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
...
if (firstPieceView.center.x == secondPieceView.center.x)
secondPieceView.center = CGPointMake(firstPieceView.center.x - 50, firstPieceView.center.y - 50);
...
}
このサンプルの上記タッチイベントで変更されているのはcentreプロパティ(中心の座標)ですが、
代わりにここでframeプロパティを変更すれば左上の座標とサイズが変更できるわけです。
ただ、僕が説明しているのはUI系のオブジェクトを使った場合になります。
もし本格的にOpenGLなどを使ってCGを作成するのであれば、
iPhoneではやったことがないのでちょっと僕には分かりませんね・・・。
非常にわかりやすい説明ありがとうございます。
時間がなくまだ試していませんができそうな気がしました。
非常にわかりやすい説明ありがとうございます。
時間がなくまだ試していませんができそうな気がしました。