タグ付けされた質問 「autolayout」

自動レイアウトは、OS XおよびiOS用の制約ベースの説明的なユーザーインターフェイスレイアウトシステムです。


12
制約の変更をアニメーション化するにはどうすればよいですか?
古いアプリをで更新AdBannerViewしています。広告がない場合、画面からスライドします。広告がある場合、画面上をスライドします。基本的なもの。 古いスタイルで、アニメーションブロックにフレームを設定しました。新しいスタイル、私はIBOutlet自動レイアウトの制約にY位置を決定します。この場合、スーパービューの下部からの距離であり、定数を変更します: - (void)moveBannerOffScreen { [UIView animateWithDuration:5 animations:^{ _addBannerDistanceFromBottomConstraint.constant = -32; }]; bannerIsVisible = FALSE; } - (void)moveBannerOnScreen { [UIView animateWithDuration:5 animations:^{ _addBannerDistanceFromBottomConstraint.constant = 0; }]; bannerIsVisible = TRUE; } バナーは予想通りに動きますが、アニメーションはありません。 更新:私はアニメーションをカバーするWWDC 12トークオートレイアウトをマスターするためのベストプラクティスを再視聴しました。CoreAnimationを使用して制約を更新する方法について説明します。 次のコードを試してみましたが、まったく同じ結果が得られます。 - (void)moveBannerOffScreen { _addBannerDistanceFromBottomConstraint.constant = -32; [UIView animateWithDuration:2 animations:^{ [self.view setNeedsLayout]; }]; bannerIsVisible = FALSE; } …


30
UITextViewのサイズをコンテンツに合わせるにはどうすればよいですか?
UITextView内容に合わせてaのサイズを調整する良い方法はありますか?たとえば、UITextView1行のテキストを含むがあるとします。 "Hello world" 次に、別のテキスト行を追加します。 "Goodbye world" Cocoa Touchでrectテキストビューのすべての行を保持して、それに応じて親ビューを調整できるようにする良い方法はありますか? 別の例として、カレンダーアプリケーションのイベントのノートのフィールドを見てください。セル(およびセルUITextViewに含まれる)がどのように拡張され、ノートの文字列内のすべてのテキスト行が保持されているかに注意してください。

30
UIScrollViewスクロール可能なコンテンツサイズのあいまいさ
開発者の皆さん、Interface Builder(Xcode 5 / iOS 7)のAutoLayoutに問題があります。これは非常に基本的で重要なので、これが正しく機能する方法を誰もが知っておくべきだと思います。これがXcodeのバグである場合、それは重大なバグです! したがって、このようなビュー階層があるときはいつでも問題が発生します。 >UIViewController >> UIView >>>UIScrollView >>>>UILabel (or any other comparable UIKit Element) UIScrollViewには、すべての側面から50ピクセルなどの制約があります(問題ありません)。次に、UILabelにTop Space制約を追加します(問題ありません)(そして、ラベルの高さ/幅を固定することもできますが、何も変更しませんが、Labelの固有のサイズのために不要になるはずです)。 UILabelに末尾の制約を追加すると、問題が発生します。 例:末尾のスペース:スーパービュー等しい:25 ここで2つの警告が発生します-その理由がわかりません。 A)スクロール可能なコンテンツサイズのあいまいさ(スクロールビューには、スクロール可能なコンテンツの高さ/幅があいまいです) B)ビューの配置ミス(予想ラベル:x = -67実際:x = 207) 私はこの最小限の例を、新しくダウンロードできる新しいプロジェクトで実行し、スクリーンショットを添付しました。ご覧のとおり、Interface Builderは、LabelがUIScrollViewの境界(オレンジ色の破線の長方形)の外側にあると想定しています。問題解決ツールでラベルのフレームを更新すると、ラベルがすぐに移動します。 注:UIScrollViewをUIViewに置き換えると、動作は期待どおりになります(ラベルのフレームは正しく、制約に従います)。したがって、UIScrollViewに問題があるか、何か重要なことを見逃しているようです。 IBで提案されているように、ラベルのフレームを更新せずにアプリを実行すると、正確に、正確に配置され、UIScrollViewはスクロール可能です。フレームを更新すると、ラベルが見えなくなり、UIScrollViewがスクロールしません。 オビ=ワン・ケノービを助けて!なぜあいまいなレイアウトなのですか?なぜ見当違いの表示ですか? ここでサンプルプロジェクトをダウンロードして、何が起こっているのかを理解できるかどうか試してください:https : //github.com/Wirsing84/AutoLayoutProblem

16
Swiftを使用してプログラムで制約を追加する方法
これ以上先に進めずに先週からこれを理解しようとしています。[OK]をので、私はいくつかの適用する必要があり、制約を プログラム的にスウィフトにUIViewこのコードを使用します: var new_view:UIView! = UIView(frame: CGRectMake(0, 0, 100, 100)); new_view.backgroundColor = UIColor.redColor(); view.addSubview(new_view); var constX:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0); self.view.addConstraint(constX); var constY:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0); self.view.addConstraint(constY); …

4
StackPanelの子が最大スペースを下に埋めるにはどうすればよいですか?
単純に左側にフローテキスト、右側にヘルプボックスを表示します。 ヘルプボックスが一番下まで伸びているはずです。 StackPanel下のアウターを取り出すと上手くいきます。 しかし、レイアウトの理由から(ユーザーコントロールを動的に挿入しています)、ラッピングが必要StackPanelです。 試してみGroupBoxたように、をの下部まで拡張するにはどうすればよいですかStackPanel。 VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Height="Auto" XAML: <Window x:Class="TestDynamic033.Test3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Test3" Height="300" Width="600"> <StackPanel VerticalAlignment="Stretch" Height="Auto"> <DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="Auto" Margin="10"> <GroupBox DockPanel.Dock="Right" Header="Help" Width="100" Background="Beige" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Height="Auto"> <TextBlock Text="This is the help that is available on the news screen." TextWrapping="Wrap" /> </GroupBox> <StackPanel DockPanel.Dock="Left" Margin="10" …

7
Xcode 6のAutoLayout制約を使用してアスペクトフィット動作をエミュレートする
AutoLayoutを使用して、UIImageViewのアスペクトフィットコンテンツモードを連想させる方法でビューのサイズとレイアウトを設定します。 Interface Builderのコンテナビュー内にサブビューがあります。サブビューには、尊重したい固有のアスペクト比があります。コンテナービューのサイズは、実行時まで不明です。 コンテナビューのアスペクト比がサブビューよりも広い場合、サブビューの高さを親ビューの高さと等しくします。 コンテナービューの縦横比がサブビューよりも高い場合、サブビューの幅を親ビューの幅と等しくします。 どちらの場合でも、サブビューがコンテナビュー内で水平方向と垂直方向の中央に配置されるようにします。 Xcode 6または以前のバージョンでAutoLayout制約を使用してこれを達成する方法はありますか?理想的にはInterface Builderを使用しますが、そうでない場合でも、プログラムでこのような制約を定義することは可能です。

21
ビューが非表示のときに自動レイアウトを使用して他のビューを移動するにはどうすればよいですか?
私はカスタムセルをIBで設計し、サブクラス化し、アウトレットをカスタムクラスに接続しました。セルコンテンツには、UIView(cdView)と2つのラベル(titleLabelとemailLabel)の3つのサブビューがあります。各行で使用可能なデータによっては、UIViewと2つのラベルをセルに表示したい場合と、2つのラベルのみを表示したい場合があります。私がやろうとしているのは、UIViewプロパティを非表示に設定した場合、またはスーパービューから削除した場合に、2つのラベルが左に移動するように制約を設定することです。UIpx先行制約を10pxのスーパービュー(セルコンテンツ)に設定し、UILabelsが10 pxの制約を次のビュー(UIView)に設定しようとしました。後で私のコードで -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(IndexPath *)indexPath { ... Record *record = [self.records objectAtIndex:indexPath.row]; if ([record.imageURL is equalToString:@""]) { cell.cdView.hidden = YES; } 私は自分のcell.cdViewを非表示にしていて、ラベルを左に移動させたいのですが、それらはセル内の同じ位置にとどまっています。superviewからcell.cdViewを削除しようとしましたが、うまくいきませんでした。私が何であるかを明確にするために画像を添付しました。 私はこれをプログラムで行う方法を知っており、その解決策を探していません。私が欲しいのはIBに制約を設定することです。他のビューが削除または非表示にされた場合、私のサブビューが動的に移動することを期待しています。自動レイアウトでIBでこれを行うことは可能ですか? .....

10
自動優先最大レイアウト幅は8.0より前のiOSバージョンでは使用できません
Xcode6 beta6で既存のiOSプロジェクトを開いたところ、XcodeはStoryboardファイルとXibファイルの両方に対して次の警告を表示します。 自動優先最大レイアウト幅は8.0より前のiOSバージョンでは使用できません 以下のように幅を明示的に設定することで警告に対処しようとしました: それでも警告は解決されませんでした。どうすれば削除できますか?
322 ios  autolayout  ios8  xcode6 

21
「このアプリケーションは、自動レイアウトエンジンをバックグラウンドスレッドから変更しています」エラーが発生しましたか?
私のOS Xでswiftを使用してこのエラーが頻繁に発生しています: 「このアプリケーションは、自動レイアウトエンジンをバックグラウンドスレッドから変更しているため、エンジンの破損や奇妙なクラッシュにつながる可能性があります。これにより、将来のリリースで例外が発生します。」 私のNSWindowがcontentViewあり、ウィンドウのビューにスワップしています。ウィンドウでを実行しようとしたり、ウィンドウにを追加したりすると、エラーが発生します。自動サイズ変更機能を無効にしてみましたが、自動レイアウトを使用するものはありません。何かご意見は?NSApp.beginSheetsubview 時にはそれは大丈夫で何も起こりません、他の時にはそれは完全に私UIを壊し、何もロードしません

29
コンテナービュー内で複数のビューを等間隔に配置する
自動レイアウトは私の人生を困難にしています。理論的には、切り替えたときにとても便利でしたが、いつもそれと戦っているようです。 私は助けを見つけることを試みるためにデモプロジェクトを作りました。ビューのサイズが変更されるたびに、ビュー間のスペースを均等に増減する方法を知っている人はいますか? 以下は3つのラベルです(手動で垂直方向に等間隔に配置)。 私が欲しいのは、回転するときに、ビューのサイズではなく間隔を均等に変更することです。デフォルトでは、トップビューとボトムビューは中央に向かって押しつぶされます。

9
layoutSubviewsはいつ呼び出されますか?
layoutSubviewアニメーション中にメッセージが表示されないカスタムビューがあります。 画面いっぱいにビューがあります。画面の下部にカスタムサブビューがあり、ナビゲーションバーの高さを変更した場合、Interface Builderでサイズが正しく変更されます。layoutSubviewsビューが作成されたときに呼び出されますが、二度と呼び出されません。私のサブビューは正しくレイアウトされています。呼び出し中のステータスバーをオフに切り替えるlayoutSubviewsと、メインビューがサイズ変更をアニメーション化しても、サブビューが呼び出されません。 layoutSubviews実際にはどのような状況で呼ばれていますか? 私がしているautoresizesSubviewsに設定NO私のカスタムビューのために。そして、Interface Builderには、上部と下部の支柱と垂直矢印のセットがあります。 パズルのもう1つの部分は、ウィンドウをキーにする必要があることです。 [window makeKeyAndVisible]; それ以外の場合、サブビューは自動的にサイズ変更されません。

15
NSLayoutConstraint "UIView-Encapsulated-Layout-Height"とは何ですか?強制的にクリーンに再計算するにはどうすればよいですか?
UITableViewiOS 8で実行していて、ストーリーボードの制約からセルの自動高さを使用しています。 自分のセルの1つにシングルが含まれていて、UITextViewユーザー入力に基づいて縮小および拡張する必要があります-テキストを縮小/拡張するにはタップします。 これを行うには、テキストビューにランタイム制約を追加し、ユーザーイベントに応じて制約の定数を変更します。 -(void)collapse:(BOOL)collapse; { _collapsed = collapse; if(collapse) [_collapsedtextHeightConstraint setConstant: kCollapsedHeight]; // 70.0 else [_collapsedtextHeightConstraint setConstant: [self idealCellHeightToShowFullText]]; [self setNeedsUpdateConstraints]; } これを行うときはいつでも、tableView更新でラップして呼び出します[tableView setNeedsUpdateConstraints]: [tableView beginUpdates]; [_briefCell collapse:!_showFullBriefText]; [tableView setNeedsUpdateConstraints]; // I have also tried // [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop]; // with exactly the same results. [tableView endUpdates]; これを行うと、セルが展開します(そして、展開中にアニメーション化します)が、制約の警告が表示されます。 2014-07-31 …

3
Xcode 6のストーリーボードの「マージンに制限」とは
自動レイアウトと制約を使用していて、 Constrain to marginsますが、Xcode 6にはXcode 5にはなかっオプションデフォルトでチェックされています。 テストプロジェクトを作成してUITableViewから、ビューと同じサイズに設定されたフレームを使用してViewControllerにを追加し、制約を追加しました Xcode 6 これは、tableviewのフレームがビューXcodeが制約として-16を追加することを提案しているのと同じフレームですが、Xcode 5は間隔0を追加することを提案していますが、ここに表示されます。 「マージンに制約」オプションのチェックを外すと、Xcode 5と同じように動作し、制約として0を追加することを提案します また、[マージンへの制約]チェックをオンにして制約を追加すると、ストーリーボードファイルをXcode 5で開くことができなくなり、Xcode 6で間違いなく新しいものになることがわかりました。 うまくいけば、私は私の質問を適切に説明することができます。「Constrain to margin」が実際に行うことと、いつ使用すべきか、使用すべきでないかを理解したいと思います。それが非常にシンプルで明白なものである場合は、謝罪します。 編集 私はここでの議論でレイアウトの余白について何かを見つけました、それはこれに関連しているのだろうかと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.