私はUIViewを別のUIViewと同様に最初のものにレンダリングさせる方法を考えています。だから私はそれの境界と私のメインのUIViewを持って、UIViewはまた、いくつかの他のUIViewでレンダリングします。iOS iPhoneでUIViewを複製し、それを2つのUIViewに描画することは可能ですか?
これは可能ですか?大規模なレイヤー操作が必要ですか?
私はUIViewを別のUIViewと同様に最初のものにレンダリングさせる方法を考えています。だから私はそれの境界と私のメインのUIViewを持って、UIViewはまた、いくつかの他のUIViewでレンダリングします。iOS iPhoneでUIViewを複製し、それを2つのUIViewに描画することは可能ですか?
これは可能ですか?大規模なレイヤー操作が必要ですか?
実際の意図は何であるか分かりませんが、これはビューを2回描きます。ユーザーインタラクションなどは2番目のビューでは機能しません。また、このソリューションは異なるフレームサイズを処理しません。あなたは今、あなただけのcloneViewを呼び出すことができますし、どこかにあなたがしたいことを追加
#import "SrcView.h"
#import "CloneView.h"
@implementation SrcView
@synthesize cloneView;
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{
[cloneView setNeedsDisplay];
}
- (UIView *)cloneView {
if (!cloneView) {
cloneView = [[CloneView alloc] initWithView:self];
}
return cloneView;
}
@end
@implementation CloneView
@synthesize srcView;
- (id)initWithView:(UIView *)src {
self = [super initWithFrame:src.frame];
if (self) {
srcView = src;
}
return self;
}
- (void)drawRect:(CGRect)rect
{
[srcView.layer renderInContext:UIGraphicsGetCurrentContext()];
}
@end
のクローンを作成したいビューの
@interface SrcView : UIView
@property(nonatomic, readonly, strong) UIView *cloneView;
@end
@interface CloneView : UIView
@property(nonatomic, weak) UIView *srcView;
- (id)initWithView:(UIView *)src;
@end
実装のクローンを作成したいビューの
ヘッダー。
これはすばらしい動作をします..すばらしい例です。 –
これは、StackOverflowでここで質問されているようです。たとえば、次のように
iphone, ipad Duplicate UIView - Cloned View
Copying the drawn contents of one UIView to another
Duplicate, clone or copy UIView
しかし、それはこれをやってくれたならば、私の最初のアプローチは、私がしたいUIView
へのハンドルを取得することですコピーした後、再帰的にそれをすべてsubviews
で繰り返し、次にコピー &それらをサブビューとしてUIView
に追加します。メインのUIViewをコピーします。
レイヤー操作が多すぎるとは思いませんが、アウトレットやアクションをプログラムで再構築する方法を理解する必要があります。
それらをサブビューとして追加すると、基本的にそれらのアイテムを別の親ビューの下に移動して、コピーしないで移動します。 –
"複製"したい別のインスタンスを作成し、別のビューにサブビューとして追加します。あなたは実際にUIView オブジェクトをクローンしていないので、単純に別のインスタンスを作成します。
ビューを複製し、2つのビューを1行のコードで簡単に更新する方法はありません。それらの根底にあるCALayersが異なるからです。使用のUIViewのメソッド::しかし、UIViewのを複製するために、ここで使用できる新しい方法がある
- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates
これは、ビューを描画するための最速の方法です。 iOS 7で利用可能です。
新しいインスタンスを作成する以外の方法でレンダリングしますか?結局のところ、オブジェクトです。 – jmstone617