代码之家  ›  专栏  ›  技术社区  ›  testing

在uinavigationbar中添加带有两个uibarbuttonitem的uitoolbar:poor uitoolbar和iphone 4怎么样?

  •  8
  • testing  · 技术社区  · 14 年前

    我在听第二条建议 here . 在这个技巧中,两个uibarbuttonitim放在一个uitoolbar中。最后,将uitoolbar添加到uinavigationbar。现在我的问题是:

    1)U工具栏顶部有一条白线。如果我增加uitoolbar的大小,那么梯度就错了。我正在使用以下尺寸的Uitoolbar:

        UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 90, 44.01)];
    

    我怎样才能去掉白线?请参见此处: alt text

    问题是有一条白色而不是灰色的线。如果是灰色的,一切都会很完美。

    2)iPhone3和iPhone4的显示尺寸有什么不同?我需要检查使用的是哪一款iPhone,然后再加倍吗?

    编辑:

    按钮的创建方式与我从上述网站上获取的以下示例类似:

    // create a toolbar to have two buttons in the right
    UIToolbar* tools = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 133, 44.01)];
    
    // create the array to hold the buttons, which then gets added to the toolbar
    NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:3];
    
    // create a standard "add" button
    UIBarButtonItem* bi = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:NULL];
    bi.style = UIBarButtonItemStyleBordered;
    [buttons addObject:bi];
    [bi release];
    
    // create a spacer
    bi = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    [buttons addObject:bi];
    [bi release];
    
    // create a standard "refresh" button
    bi = [[UIBarButtonItem alloc]
    initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refresh:)];
    bi.style = UIBarButtonItemStyleBordered;
    [buttons addObject:bi];
    [bi release];
    
    // stick the buttons in the toolbar
    [tools setItems:buttons animated:NO];
    
    [buttons release];
    
    // and put the toolbar in the nav bar
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:tools];
    [tools release];
    

    @锝:

    我试着将其分类 UIToolbar .

    // MyToolbar.h
    
    #import <Foundation/Foundation.h>
    
    
    @interface MyToolbar : UIToolbar {
    
    }
    
    @end
    
    // MyToolbar.m
    
    #import "MyToolbar.h"
    
    
    @implementation MyToolbar
    
    - (void)drawRect:(CGRect)rect {
        // do nothing
    }
    
    - (id)initWithFrame:(CGRect)aRect {
        if ((self = [super initWithFrame:aRect])) {
            self.opaque = NO;
            self.backgroundColor = [UIColor clearColor];
            self.clearsContextBeforeDrawing = YES;      
        }
        return self;
    }
    
    @end
    
    4 回复  |  直到 13 年前
        1
  •  5
  •   tc.    14 年前

    无法保证uitoolbar在uinavigationbar中无缝绘制;这可能是您看到的白线的原因。

    您可以对UItoolBar进行子类化,这样它就不会绘制(即override-drawRect:不做任何事情)。

        2
  •  0
  •   zpasternack    14 年前

    1)我无法解释白线。好奇它只在你的按钮上面。如何创建按钮?还有,你为什么要把高度设为44.01,而不仅仅是44?我不能肯定你设定的高度在任何情况下都是值得尊敬的,他们可能会被迫达到44(如果我错了,有人会纠正我)。

    2)你不必为iPhone4做任何事情,一切都会自动缩放。

        3
  •  0
  •   knuku    14 年前

    你试过加那些按钮吗 在容器内 UIView 然后将其添加为项,但使用 UIBarButtonSystemItemFlexibleSpace ?我的意思是将这些按钮中的每一个作为独立项添加。

        4
  •  0
  •   mehmed.ali    13 年前

    一个uitoolbar被设计用于iPhone屏幕的底部,所以如果你在其他地方使用它,它会在顶部产生边缘效果。为了避免这种情况,工具栏高度应该比导航栏高度大2个像素。bu这一次你会有一个不同的副作用,这会导致导航条底部边缘清晰。(在任何情况下,导航栏都会将右箭头按钮置于中间对齐的位置)