Прозрачный UIToolbar - PullRequest
       1

Прозрачный UIToolbar

9 голосов
/ 06 июня 2011

Я написал следующий код, чтобы сделать мою панель инструментов прозрачной.

[mtoolbar setBackgroundColor:[UIColor clearColor]];

Как мне сделать UIToolbar прозрачным?

Ответы [ 7 ]

11 голосов
/ 16 апреля 2013
[self.toolbar setBackgroundImage:[UIImage new]
              forToolbarPosition:UIToolbarPositionAny
                      barMetrics:UIBarMetricsDefault];

[self.toolbar setBackgroundColor:[UIColor clearColor]];
11 голосов
/ 06 июня 2011

Можно установить для свойства translucent значение YES и посмотреть, поможет ли это.

5 голосов
/ 13 декабря 2012

Установка свойства translucent на YES не будет работать в iOS 5 и ниже.Вот как это можно сделать без подкласса панели инструментов:

const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];

[self.toolbar setBackgroundImage:maskedImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
4 голосов
/ 06 июня 2011

Проверьте код ниже

[myToolbar setBarStyle:UIBarStyleBlack];
[myToolbar setTranslucent:YES];

Взято из

@ Brandon Bodnár ответил в нижеследующем сообщении SO.

Разве UIToolBar не может быть прозрачным?

Вы также можете использовать другой подход

Прозрачный UIToolBar

2 голосов
/ 26 октября 2012
for (UIView * sv in [toolBar subviews])
{
     [sv removeFromSuperview];
}

;) любые операции ввода-вывода

1 голос
/ 07 апреля 2014

Это сработало для меня для iOS 6 и 7:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), NO, 0.0);
UIImage *blank = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[self.toolBar setBackgroundImage:blank forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
1 голос
/ 21 августа 2012

Следующее работает в iOS 5 (и iOS 6 beta 4, хотя там все еще видна небольшая верхняя тень).

Обратите внимание: Сделать прозрачным UIToolbar или UINavigationBar редко бывает хорошей идеей, и изменение элементов Apple UIKit таким способом неизбежно рано или поздно сломается.

TransparentToolbar.h

#import <UIKit/UIKit.h>

@interface TransparentToolbar : UIToolbar

@end

TransparentToolbar.m

#import "TransparentToolbar.h"

@implementation TransparentToolbar

-(void)insertSubview:(UIView *)view atIndex:(NSInteger)index
{
    //  This method is called with a view of class "UINavigationBarBackground" or "_UIToolbarBackground", respectively. It would be possible to check for this with NSStringFromClass([view class]) to be completely sure that we're skipping the right view.

    if (index != 0)
    {
        [super insertSubview:view atIndex:index];
    }
    else
    {
        // insert your custom background view, if you want to
    }
}


@end

РЕДАКТИРОВАТЬ: В iOS 5+ этоТакже возможно просто установить backgroundImage (который может быть прозрачным).Это, безусловно, более «чистое» решение, но оно менее гибкое, чем обычное UIView.

[someToolbar setBackgroundImage:[UIImage imageNamed:@"clear"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
...