0

たくさんの質問があります:

  1. 追加するビューの下部にあるように UIView を配置するにはどうすればよいですか?
  2. サブビューをビューに追加して、スーパービューの隅に小さなギャップを設けて配置するにはどうすればよいですか (何かを閉じるために 'x' 十字記号が必要な場合のように)
  3. 簡単な UIView の配置 (および回転) のためのユーティリティ クラスですか?

参考文献、オープンソースのチュートリアルなどは大歓迎です!

4

6 に答える 6

1

(a)UIViewを、追加するビューの下部に配置する方法を教えてください。

buttonOK、ビューの下部にサブビューとして配置したいとします。サブビューの高さからボタンの高さを差し引くことによって、サブビューのformを計算します。origin.ybuttonform

CGRect buttonFrame = button.frame;
buttonFrame.origin.y = form.bounds.size.height - buttonFrame.size.height;
button.frame = buttonFrame;
[form addSubview:button];

原点の水平位置も変更できます。左下に置きたいform

buttonFrame.origin.x = 0;

formまたは?の右端に

buttonFrame.origin.x = form.bounds.size.width - buttonFrame.size.width;

または?の真ん中(水平方向)にform

buttonFrame.origin.x = (form.bounds.size.width - buttonFrame.size.width) / 2;

またはCGRectGetMidXCGGeometryユーティリティメソッドにある)を使用する別の方法:

buttonFrame.origin.x = CGRectGetMidX(form.bounds) - buttonFrame.size.width/2;

自動サイズ変更は、親ビューのサイズが変更されたときにフレームを調整するハンドルです。ただし、それでも最初に配置する必要があります。

于 2013-03-08T14:22:59.027 に答える
1
int xOffset = 20;
int yOffset = 20;
CGRect BottomRight_NewFrame = CGRectMake((superview.frame.size.width - subview.frame.size.width-xOffset), (superview.frame.size.height - subview.frame.size.height-yOffset), subview.frame.size.width, subview.frame.size.height);
subview.frame = BottomFrame;
于 2013-03-08T14:33:41.313 に答える
0

自動レイアウトは、ビューを配置し、スーパービューのサイズが変更された場合にそれらの位置を維持するのに役立ちます。スーパービューが変更されない場合は、制約をいじる必要はありません。サブビューの位置を適切に設定するだけです。

viewBビューをビューに追加する場合viewA

a)下端が:viewBの下端に対応するように配置します。viewA

viewB.frame.origin.y = viewA.bounds.size.height - viewB.bounds.size.height;

b)どちらのコーナーかは言わないが、それはただ数学をすることの問題だ。たとえば、の右上隅はviewAviewA{viewA.bounds.size.x, 0}の座標系にあります。そこに配置する場合はviewB、原点を次のように設定します。

{viewA.bounds.size.x-viewB.bounds.size.x, 0}

マージンを追加したい場合は、それを計算に追加できます。

int margin = 10;
{viewA.bounds.size.x-viewB.bounds.size.x-margin, margin}

d)NSLayoutConstraintを使用して、プログラムで自動レイアウトシステムの制約にアクセスします。優れたビジュアルフォーマット言語があるので、質問(a)に対して次の制約を設定できますviewA

V:|-[viewB]-0-|

V垂直方向で作業していることを意味し、はスーパービュー|のエッジ(のおかげで上と下)を表し、スーパービューとその下の間の距離は0でなければならないことを意味します。VviewA0viewB

于 2013-03-08T14:22:26.277 に答える
0

フレームを設定するだけで十分簡単です。例:(テストされていないコード)

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

これをたくさん行う場合は、ユーティリティクラスまたはメソッドを作成します。

于 2013-03-08T14:16:42.003 に答える
0

これを実現するには、iOS 6 の新しい Autolayout 機能または Interface Builder の古い Struts & Springs を使用できます。

このチュートリアルでは両方について説明しています: http://msmvps.com/blogs/kevinmcneish/archive/2012/12/10/tutorial-ios-6-auto-layout-versus-springs-and-struts.aspx

または、自動サイズ変更マスクをプログラムで設定できます。UIView autoresizingMask - Interface Builder to Code - プログラムでストラットとスプリングを作成 - Swift または Objective-C

于 2013-03-08T13:58:47.690 に答える