私はiOS 4.2用に少し前に構築されたプロジェクトに取り組んでいます。iPhone 5などのいくつかのビューのサイズを変更する必要がありました。背景画像が欠落しているNavigationBarを除いて、すべてが完全に機能します。
これを iOS 6 でコンパイルしようとしたときに表示された唯一の警告は次のとおりです。
@interface UINavigationBar (HomeBrokerNavigationBar)
UIView * topItemHeaderView;
Cannot declare variable inside @interface or @protocol.
その行をコメントアウトし、同じ行を @interface の上に書いたので、コンパイルエラーは発生しませんが、NavigationBar は画像なしで表示されます。
これは私のプロジェクトではないので、コントローラーをあまりいじりたくありません。ビューを更新するだけでした。誰もこの種の問題を抱えていましたか?これは物事がどのように見えるかです:
UIView * topItemHeaderView;
@interface UINavigationBar (HomeBrokerNavigationBar)
//UIView * topItemHeaderView; //This caused an error so I commented it and placed the line outside.
- (void)layoutNavigationBarBackground;
- (void)layoutNavigationBarShadow;
- (void)setTopItemTitle:(NSString *)title andSubtitle:(NSString *)subtitle;
- (void)setTitleForStockWithShortName:(NSString *)stockShortName andLargeName:(NSString *)stockLargeName;
- (void)setFirstActionButtonWithImage:(NSString *)imageName forTarget:(id)target andAction:(SEL)action;
- (void)setSecondActionButtonWithImage:(NSString *)imageName forTarget:(id)target andAction:(SEL)action;
- (void)setThridActionButtonWithImage:(NSString *)imageName forTarget:(id)target andAction:(SEL)action;
- (void)setActionButtonWithFrame:(CGRect)frame andImage:(NSString *)imageName forTarget:(id)target andAction:(SEL)action;
@end
および .m ファイル:
- (void)drawRect:(CGRect)rect {
self.topItem.hidesBackButton = YES;
if(!self.hidden)
{
self.tintColor = [UIColor colorWithRed:0.003922 green:0.137255 blue:0.313726 alpha:1.0];
[self layoutNavigationBarBackground];
[self layoutNavigationBarShadow];
}
}
- (UIView *)topItemHeaderView {
return topItemHeaderView;
}
- (void)layoutNavigationBarShadow {
CAGradientLayer * navigationBarShadow;
navigationBarShadow = [[CAGradientLayer alloc] init];
navigationBarShadow.frame = CGRectMake(self.frame.origin.x, 0, self.frame.size.width + 20, 20);
CGColorRef topColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5].CGColor;
CGColorRef bottomColor = [self.tintColor colorWithAlphaComponent:0.0].CGColor;
navigationBarShadow.colors = [NSArray arrayWithObjects:(id)topColor, (id)bottomColor, nil];
[navigationBarShadow autorelease];
[self.topItemHeaderView.layer addSublayer:navigationBarShadow];
}
つまり、bgHeader.png が表示されないだけです。