簡體   English   中英

子類化UIVisualEffectView的問題

[英]Issue with subclassing UIVisualEffectView

我正在自定義一個Parse登錄視圖,並使用一個庫創建了一個模糊的背景,但是現在我可以使用UIVisualEffectView。 因為我有一個類作為PFLoginViewController的委托人, PFLoginViewController我決定繼承UIVisualEffectView並使其成為我的委托人。 問題是,並非我的所有登錄視圖都顯示出來。 我知道我的相框設置正確。 這是我的代碼,可以更好地了解我所談論的內容。

-(id)initWithEffect:(UIVisualEffect *)effect {

    self = [super initWithEffect:effect];

    [self setUpUserViews];

    return self;

}

- (void)setUpUserViews {

    NSLog(@"Setting Up View");

    CGRect size = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);

    //Initialize login and sign up views
    _loginView = [[PFLogInViewController alloc] init];
    _signUpView = [[PFSignUpViewController alloc] init];

    //Set their delegates to this view controller
    [_loginView setDelegate:self];
    [_signUpView setDelegate:self];

    //Set fields for sign up view
    [_signUpView setFields:PFSignUpFieldsEmail | PFSignUpFieldsUsernameAndPassword | PFSignUpFieldsSignUpButton];

    //Set sign up view for login view
    [_loginView setSignUpController:_signUpView];

    //Set up login view
    _loginView.view.frame = size;

    _loginView.view.backgroundColor = [UIColor clearColor];

    [_loginView.logInView setLogo:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"banner.png"]]];

    //Set Login Button
    [_loginView.logInView.logInButton setBackgroundImage:[UIImage imageNamed:@"orange.png"] forState:UIControlStateNormal];
    [_loginView.logInView.logInButton setBackgroundImage:[UIImage imageNamed:@"orangeDown.png"] forState:UIControlStateHighlighted];

    //Set login text color
    [_loginView.logInView.logInButton setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];
    [_loginView.logInView.logInButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];

    //Set sign up button
    [_loginView.logInView.signUpButton setBackgroundImage:[UIImage imageNamed:@"green.png"] forState:UIControlStateNormal];
    [_loginView.logInView.signUpButton setBackgroundImage:[UIImage imageNamed:@"greenDown.png"] forState:UIControlStateHighlighted];

    //Set sign up button text color
    [_loginView.logInView.signUpButton setTitleColor:[UIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:0.6] forState:UIControlStateNormal];
    [_loginView.logInView.signUpButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];

    //Set dismiss button
    [_loginView.logInView.dismissButton setImage:nil forState:UIControlStateNormal];
    [_loginView.logInView.dismissButton setImage:nil forState:UIControlStateHighlighted];

    [_loginView.logInView.dismissButton setBackgroundImage:nil forState:UIControlStateHighlighted];
    [_loginView.logInView.dismissButton setBackgroundImage:nil forState:UIControlStateNormal];

    [_loginView.logInView.dismissButton setBackgroundImage:[UIImage imageNamed:@"dismiss.png"] forState:UIControlStateHighlighted];
    [_loginView.logInView.dismissButton setBackgroundImage:[UIImage imageNamed:@"dismiss.png"] forState:UIControlStateNormal];

    //Set forgotten button
    [_loginView.logInView.passwordForgottenButton setImage:[UIImage imageNamed:@"forgot.png"] forState:UIControlStateNormal];
    [_loginView.logInView.passwordForgottenButton setImage:[UIImage imageNamed:@"forgot.png"] forState:UIControlStateHighlighted];

    [_loginView.logInView.passwordForgottenButton setBackgroundImage:nil forState:UIControlStateNormal];
    [_loginView.logInView.passwordForgottenButton setBackgroundImage:nil forState:UIControlStateHighlighted];

    //Use custom method for showing sign up view
    [_loginView.logInView.signUpButton  removeTarget:nil action:NULL  forControlEvents:UIControlEventAllEvents];

    [_loginView.logInView.signUpButton  addTarget:self action:@selector(customViewMethod) forControlEvents:UIControlEventTouchUpInside];

    //Set up sign up view
    _signUpView.signUpView.backgroundColor = [UIColor clearColor];

    //Set sign up button
    [_signUpView.signUpView.signUpButton setImage:[UIImage imageNamed:@"green.png"] forState:UIControlStateNormal];
    [_signUpView.signUpView.signUpButton setImage:[UIImage imageNamed:@"greenPress.png"] forState:UIControlStateHighlighted];

    [_signUpView.signUpView.signUpButton setBackgroundImage:nil forState:UIControlStateNormal | UIControlStateHighlighted];

    //Present login view
    [self.contentView addSubview:_loginView.view];
}

這是我得到的屏幕截圖。 左上角有一個X。 這是登錄視圖的一部分:

在此處輸入圖片說明

這是應該看起來的屏幕截圖:

在此處輸入圖片說明

問題已經解決。 問題是事情太快地從內存中釋放出來,導致沒有nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM