2012年11月29日木曜日

UIScrollViewの大きさを変更する

UIScrollView(というかUIViewの話だけど、今回使おうとしてたのがUIScrollViewだった。)の大きさを変更出来なくて困りました。

Interface BuilderからUIScrollViewを追加します。


プロパティもこんな感じで適当に。

//  ViewController.h
-----略
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;



↓実行(背景色は見やすいように黒に設定してあります。)
















黒枠の大きさを変更します。


//  ViewController.m
-----略
- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.scrollView setFrame:CGRectMake(0,0, 10, 10)];
}
-----略



↓実行


大きさ変わらず。

↓ 色々試してみる。


//  ViewController.m
-----略
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.scrollView =[[UIScrollView alloc] init];
    [self.scrollView setFrame:CGRectMake(0,0, 10, 10)];
    self.scrollView.frame = CGRectMake(0, 0, 10, 10);
    
    [self.scrollView removeFromSuperview];
    [self.view addSubview:self.scrollView];

}
-----略


↓実行



ムキー!


☆結果


//  ViewController.m
-----略

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.scrollView removeFromSuperview];

    UIScrollView *newscrollView = [[UIScrollView alloc] init];

    [newscrollView setFrame:CGRectMake(10,10, 100, 100)];
    newscrollView.backgroundColor = [UIColor blackColor];

    [self.view addSubview:newscrollView];
}


↓実行


ということでやりたいことは実現できました。

いちいち作り直す必要があるという訳ではなく、Interface_Builderからでなく、コード内で宣言すれば、下記の通り、大きさ変更も効きました。


//  ViewController.m
-----略

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.scrollView removeFromSuperview];

    UIScrollView *newscrollView = [[UIScrollView allocinit];

    [newscrollView setFrame:CGRectMake(10,10100100)];

    [newscrollView setFrame:CGRectMake(10,10, 200, 200)];
    newscrollView.backgroundColor = [UIColor blackColor];

    [self.view addSubview:newscrollView];
}

↓実行

















結局self.**みたいな場合にはflameの大きさは変更できないってことみたいですね。
ググっても出てこないあたり、この辺はきっと私の基本的な理解が足りないので、ちゃんと勉強してる人からすれば、当然だろう!ということなんでしょうか。

この場合ViewControllerのインスタンスのプロパティとして持っちゃうと変更できないよーってことなんですかね。
背景色とかは変更出来るのになぁ。
syntesizeして、インスタンス変数からプロパティいじったら〜とやってみたけど、それも関係なさそう。

ググってみましたが、よくわかりません。
心に止めておいて、また体系立てて勉強するか、似た様な問題を解消して行けばピンと来る日が来るのではないかと思ってます。

0 件のコメント:

コメントを投稿