2011-02-03 7 views
3

toggleCollapseボタンにリンクされた水平サイズ変更ビュー(技術的にはBWToolkitサイズ変更ビュー)を使用するMac用アプリケーションを作成しました。パネルを数回折りたたんだり展開したりすると、これが起こります(画像参照)。右のテーブルビューはパネルの仕切りと同じ高さになります。いずれにせよ、なぜこれが起こっているのかについての情報があります。私は注意深くアライメントとアンカーを正しく調整しましたが、これは不思議な問題のように見えます。(Mac)パネルの再サイズの問題

Table should be flush with panel divider..

EDIT:は誰もがこの問題を持っていませんか?どんな入力が役に立つでしょう!たぶん私は新鮮なものを始める必要があるだろうか?

+0

こんにちはジョー、私は答えていただければ幸いですが、この質問はBWToolkit(フレームワーク)SplitViewsにのみ適用されます - 一般的なNSSplitViewsではありません。各クリックの間に5秒間放置しても、それは変わりません。また、ユーザーが5秒間待たなければどうなるでしょうか? Appleはこれをバグと見なし、アプリケーションを却下する可能性があります。 – Zakman411

+0

@Joe:www.brandonwalkin.com/bwtoolkit – Zakman411

+0

@Joe:こんにちは、実際はBWToolkitは非常によく知られているフレームワークで、Macアプリケーションの大部分で使用されています。しかし、ええ、この場合は確かにバグが可能です – Zakman411

答えて

4

これは、BWSplitView自体の既知のバグであり、アニメーションとタイマーがそのビューでどのように作用するかに関連しています。詳細はここで覆われている:

http://bwalkin.lighthouseapp.com/projects/36323/tickets/34-split-view-doesnt-resize-subview-properly-during-a-toggle-uncollapse-after-manual-collapse

をビューがアニメーションされる前に、ビューは内容に影響を与えずに拡張/折りたたむことができるように、基本的に、autoresizesSubviewsは、設定されていません。タイマーがスケジュールされ、アニメーションが完了したときのautoresizesSubviewsプロパティが復元されます。しかし(もちろん)アニメーションは、予定されたタイマーの起動よりも少し早く、またはそれよりも少し早く終了することがあります。アニメーションが完了する前に自動サイズ変更がオンにされ、結果的にピクセルのサイズが変更されます。見たことがあるように、サブビューは、ビューが折りたたまれて折りたたまれていないときに少し動く傾向があります。

これは、CAAnimationがコールバックを使用して完了したが、これがまだ実装されていない場合、自動修正を復元するための完全な修正です。しかし、そのスレッドでは、 "Robert Payne"がBWSplitView.mのバージョンを投稿しました。これは少し異なるアプローチを採用しています。ビューのサイズは折りたたまれる前に記録され、展開後に復元されます。私はこのパッチを自分で適用しました(最初はコンパイルされませんが、宣言されていない変数の単純な問題です)、問題を修正できるかどうか確認できます。

正常にコンパイルされるBWSplitView.m、またはコンパイルされたフレームワークのコピーを希望したら教えてください。

+0

@ローワン:ありがとう、男!非常に詳細で徹底的な対応。もちろん、あなたが私にそのコードファイルに関するいくつかの情報を得ることができれば、私は非常に感謝するでしょう – Zakman411

+0

@ Zakman411私は(完全に)パッチされたBWSplitViewを入れました。[h | m]ファイルはhttp://beent.je/BWSplitView .zipフレームワークの独自のコピーを作成する場合は、ソースツリーにドロップして、現在のコピーを置き換えます。フレームワークのコンパイル済みコピーを希望する場合は、フレームワークファイル自体のコンパイル済みコピーをダウンロードできますhttp://sequel-pro.googlecode.com/svn/trunk/Frameworks/BWToolkitFramework.framework/Versions/A/BWToolkitFrameworkから、それを現在のバージョン/コピーに置き換えてください。 (私はppc/i386/x86_64のためにそれをコンパイルしました - あなたが本当に必要ならば64ビットPPCなし!) – Rowan

+0

@Rowan:あなたは男です! – Zakman411