0

UIWebViewiOSでをで変換しようとしています。setTransformまた、で非表示にしようとしていsetHiddenます。

これらの機能は両方とも現在の設定では機能しませんが、機能loadRequestします。なぜこれが当てはまるのですか、どうすれば取得setTransformsetHiddenて作業できますか?

// ViewController.h
@class EAGLView, ARUtils;
@interface ViewController : ARViewController {
    UIWebView* webview;
}
@property (assign) UIWebView* webview;

// ViewController.mm
@synthesize webview;

-(void)viewDidLoad{
    [super viewDidLoad];
    webview = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
    [self.view addSubview:webview];
}

// EAGLView.mm
ViewController* uic;
for( UIView* next = [self superview];  next; next = next.superview){
    UIResponder* nextResponder = [next nextResponder];
    if([nextResponder isKindOfClass:[ViewController class]]){
        uic = (ViewController*)nextResponder;
    }
}

// These functions don't work:
[[[uic webview] layer] setTransform:matrix];
[[uic webview] setHidden:YES];

// And this one does:
[[uic webview] loadRequest:requestObj];

前もって感謝します!

4

2 に答える 2

2

ほとんどの UIKit クラス ( などUIWebView) は、メイン スレッドからのみ安全に使用できます。バックグラウンド スレッドを使用している場合、GCD を使用してメイン キュー (メイン スレッドに関連付けられている) でブロックを実行できます。

dispatch_async(dispatch_get_main_queue(), ^{
    //your code here
});
于 2013-03-18T15:30:45.503 に答える
0

QuartzCore ヘッダーを正しくインポートしましたか? なぜ自分のコードが機能しないのか疑問に思うことがあるのですが、このヘッダーをインポートするのを忘れていたことに気付きました..

#import <QuartzCore/QuartzCore.h>

編集 :

Layer-Backed ビューで動作するこのコードを試していただけますか :

CATransform3D matrix = CATransform3DRotate(web.layer.transform, 1.14, 0.0, 1.0, 0.0);

CABasicAnimation *animTransform = [CABasicAnimation animationWithKeyPath:@"transform"];
animTransform.fromValue = [NSValue valueWithCATransform3D:web.layer.transform];
animTransform.toValue = [NSValue valueWithCATransform3D: matrix];

animTransform.duration = 1;  // arbitrary chosen time
animTransform.autoreverses = NO; // we don't want animation to go back from beginning when ended
animTransform.repeatCount = 0;
animTransform.delegate=self;  // optional, you can use a delegate to start methods when the animation ends


// real change of the values, because the CABasicAnimation is only visual
web.layer.transform = aTransform;

// and start the animation
[web.layer  addAnimation:animTransform forKey:nil]; 

アニメーション (およびレイヤーに基づく // レイヤー ホスト ビュー) に関する非常に役立つ情報は、https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/CreatingBasicAnimations/CreatingBasicAnimations.html で見つけることができます。 #//apple_ref/doc/uid/TP40004514-CH3-SW1

于 2013-03-18T10:54:05.493 に答える