質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

2949閲覧

TableView上にスクロールしないButtonを配置

uikura

総合スコア37

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2016/01/21 07:16

編集2016/01/21 08:26

お世話になっています。iOS開発をしているものです。
どうか皆様の力をお貸しください。

現在、TableView上にスクロールしないButton(スクロールされてもずっと定位置にいる)を配置しようと考えているのですが期待通りの位置にButtonが配置されません。ソースコードを以下に置きますのでどうか回答の方をよろしくお願いします。

修正:
ButtonはviewDidLoadで生成しています。AutoLoyoutは効かせておりません。
Buttonを配置しようとしているところはscrollViewDidScrollでやっています

よろしくお願いします。

- (void)viewDidLoad { CGFloat inset = 20; CGFloat settingsButtonHeight = 32; CGFloat settingsButtonWidth = 32; CGRect settingsButtonFrame = CGRectMake((screenFrame.size.width -52), (screenFrame.size.height -52), settingsButtonWidth, settingsButtonHeight); self.settingsButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [self.settingsButton setFrame:settingsButtonFrame]; [self.settingsButton setTitle:@"押してね" forState:UIControlStateNormal]; [self.settingsButton setBackgroundColor:[UIColor redColor]]; [self.settingsButton addTarget:self action:@selector(touchBtn:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.settingsButton]; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint point = CGPointMake(self.settingsButton.frame.size.width +scrollView.contentOffset.x, self.settingsButton.frame.size.height + scrollView.contentOffset.y); self.settingsButton.frame = CGRectMake(point.x,point.y,50,50); } コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u39ueda

2016/01/21 07:30

このコードはどこで呼び出されるのでしょうか?settingsButtonはどのように配置しているのでしょうか?(TableViewにaddSubViewしたとかStoryboardでTableViewの兄弟として配置したとか)それとAutoLayoutは使用していませんか?
uikura

2016/01/21 08:01

ご指摘ありがとうございます。修正いたしました。 ButtonはviewDidLoadで生成しており、Storyboard上ではButtonに関しては何もしておりません。
u39ueda

2016/01/21 08:22

すいません。addTargetではなくaddSubviewしている箇所が欲しいッス。 あと"期待通りの位置にButtonが配置されません"とは具体的にどうなっていますか? 固定できずスクロールしてしまうのか、固定はできているが目的の場所ではなく別の場所にあるのか? もしかして左上から50,50の位置に固定されているんですかね? ついでにソースコードの最後の"コード"は削除していいと思いますよw
uikura

2016/01/21 08:30

ソースコード修正しました。何度も申し訳ありません。 現在のソースですとスクロールはされずに固定はできているですが目的の位置には配置されていない状態です。
guest

回答1

0

ベストアンサー

コードを見る限り右下から20px離した位置に固定したいのに左上に固定されてしまうという状況だと推測します。

それならば最初に提示して頂いたこの部分が原因と思われます。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint point = CGPointMake(self.settingsButton.frame.size.width +scrollView.contentOffset.x, self.settingsButton.frame.size.height + scrollView.contentOffset.y); self.settingsButton.frame = CGRectMake(point.x,point.y,50,50); }

ここを

Objective

1- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 2 CGRect screenFrame = self.view.bounds; 3 CGRect buttonFrame = self.settingsButton.frame; 4 buttonFrame.origin = CGPointMake(scrollView.contentOffset.x + screenFrame.size.width - 20.0 - buttonFrame.size.width, 5 scrollView.contentOffset.y + screenFrame.size.height - 20.0 - buttonFrame.size.height); 6 self.settingsButton.frame = buttonFrame; 7}

に変えてみてはどうでしょうか。

もう一つの解決策は、ボタンをTableViewの子にするのをやめることです。
ぶっちゃけこっちの方が簡単だと思います。

投稿2016/01/21 12:58

編集2016/01/21 15:05
u39ueda

総合スコア950

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問