What's wrong with this approach ?
What's wrong with this approach ?
- Subject: What's wrong with this approach ?
- From: Jean-François Brouillet <email@hidden>
- Date: Sat, 19 Jun 2010 01:41:19 +0100
Hi.
I pulled my hair way too long for this issue and finally
decided to solve the problem of the UINavigationBar's
topItem's titleView *not* being centred when either of
the other two sides had an UIBarButtonItem by ...
subclassing UINavigationBar!
All my attempts at manipulating the titleView's frame from
any place other than "layoutSubviews" have all utterly failed.
So, I just changed the UINavigationBar class reference to
UINavigationBarCenteredTitleView in IB and created:
// UINavigationBarCenteredTitleView.h
#import <UIKit/UIKit.h>
// Hack to have the titleView centered even when there is a left
// or right UIBarButton
@interface UINavigationBarCenteredTitleView : UINavigationBar {
}
@end
// UINavigationBarCenteredTitleView.m
#import "UINavigationBarCenteredTitleView.h"
@implementation UINavigationBarCenteredTitleView
- (id) initWithFrame: (CGRect) frame {
if ((self = [super initWithFrame:frame])) {
// nothing special to do: we just override to fix
// the layout
}
return self;
}
- (void) layoutSubviews {
[super layoutSubviews] ;
if (self.topItem) {
UIView * centeredView = self.topItem.titleView ;
CGRect selfFrame = self.frame ;
CGRect viewFrame = centeredView.frame ;
viewFrame.origin.x = (selfFrame.size.width - viewFrame.size.width) / 2.0f ;
centeredView.frame = viewFrame ;
}
}
- (void)dealloc {
[super dealloc];
}
@end
And it works!
But ... what's wrong with this? How would I solve this problem in
a more idiomatic way?
It seems odd that I am forced to subclass just to get a
supposedly centered view ... centred, no?
Many thanks
--
JFB
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden