ここでは、Werewolfが提案した回避策に似たスウィフトバージョンがあります。私は自分自身のカスタムアクティビティビュークラス(MyCustomActivityIndicatorView
)を使用しています。また、リフレッシュコントロールのサブビューでもありますので、デフォルトのサブビューのフレームだけをフレームとして扱いません。スーパーでlayoutSubviews
を呼び出した後、カスタムアクティビティビューのフレームを調整して一致させます。これはすべてカスタムUIRefreshControl
サブクラスに含まれています。
override func layoutSubviews() {
for view in subviews {
if view is MyCustomActivityIndicatorView {
continue
} else {
// UIRefreshControl sizes itself based on the size of it's subviews. Since you can't remove the default refresh indicator, we modify it's frame to match our activity indicator before calling layoutSubviews on super
var subFrame = view.frame
subFrame.size = activityView.intrinsicContentSize()
// add some margins
subFrame.offsetInPlace(dx: -layoutMargins.left, dy: -layoutMargins.top)
subFrame.insetInPlace(dx: -(layoutMargins.left+layoutMargins.right), dy: -(layoutMargins.top+layoutMargins.bottom))
view.frame = subFrame.integral
}
}
super.layoutSubviews()
activityView.frame = bounds
}
注:私は厳密には必要ではないが、息に私の活動の指標にいくつかのスペースを与えているのUIViewのレイアウトの余白に追加しています。スイフト2.2溶液について
あなたは、テーブルビューのフレームを変更することはできません理由があるインセットでそれを失望? – Wain
私は誰かがサイドパネルの下を見ようとすると、それは不完全に見えます:( – user754905
あなたのサイドパネルの幅と同じ 'x'の動きでリフレッシュコントロールにトランスフォームトランスフォームを追加することができます。 – Wain