2014-11-16 57 views
1

我已成功將Parse.com登錄服務集成到了我的應用程序,但在登錄窗口(PFLoginViewController)中更改徽標時遇到問題。具體來說,在設置新徽標後,徽標的視圖看起來會改變位置。在分析登錄窗口中更改UIView會意外移動文本字段

原 '解析' 標誌幀:(159,128,222,68)

新的自定義標誌幀:(60,12,420,68)

的另一大問題是,用戶名和密碼如果我使用不同的標誌,字段會上移〜100 px。這意味着它們重疊了新的標誌,而且看起來相當混亂。以下是兩種情況下用戶名字段的座標。與 '解析' 標誌

用戶名字段:(60,232,420,44)

用戶名字段自定義的標誌:(60,116,420,44)

我不知道我錯過了什麼,所以任何指導都會很棒。謝謝閱讀!

雜記:

  • 新標誌是720x300。
  • 對於標識替換,我使用基於Parse的login tutorial的代碼對PFLoginViewController進行了分類。

回答

2

我發現了一個可行的方法,雖然我仍然在尋找更好的東西,但我想在此期間分享此解決方案。

因爲PFLoginViewController似乎a)在viewDidAppear之前重置原始徽標視圖的大小和位置,以及b)將其餘窗口元素(例如用戶名字段)相對於徽標視圖進行定位,我停止嘗試完全替換原始標識。相反,我在原始徽標的視圖中添加了兩個子視圖:第一個是UIView,用於掩蓋原始徽標(以防您的新徽標具有透明度);第二個是帶有新徽標的UIImageView。代碼進入viewWillAppear並顯示工作正常。 (其主要缺點是,新的標誌最終以相同的尺寸和老標誌的位置。)

// Create a UIView to "cover up" original Parse logo 
UIView *blankRect=[[UIView alloc] initWithFrame:CGRectMake(0, 
                  0, 
                  self.logInView.logo.frame.size.width, 
                  self.logInView.logo.frame.size.height)]; 
[blankRect setBackgroundColor:self.logInView.backgroundColor]; 
[self.logInView.logo addSubview:blankRect]; 

// Add a subview with the new logo to the original logo's view  
UIImageView *newLogo=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LoginLogoTight.png"]]; 
[newLogo setContentMode:UIViewContentModeScaleAspectFill]; 
[newLogo setFrame:CGRectMake(0,0,self.logInView.logo.frame.size.width,self.logInView.logo.frame.size.height)]; 
[self.logInView.logo addSubview:newLogo]; 
+1

完美!我的標誌有點大,所以我通過改變CGRectMake(0,0到CGRectMake(0,-50像一個魅力一樣工作!),在newLogoView中移動它!感謝Rogare! –

2

你需要創建一個子類PFLoginViewController這樣你就可以定製論文視圖控制器。如果你想改變你框架應該重寫,並設置有新框架「loginview.logo」

- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    [self.logInView.logo setFrame:CGRectMake(60.0, 12.0, 420.0, 68.0)]; 
} 

我發現教程真正有用的,我希望這對你的工作 https://www.parse.com/tutorials/login-and-signup-views

+1

太棒了!這是第一個完美的解決方案! –