Прозрачный UIToolbar

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

[mtoolbar setBackgroundColor:[UIColor clearColor]];

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


person er.mobileapp    schedule 06.06.2011    source источник
comment
Вам нужна действительно прозрачная панель инструментов или просто полупрозрачная?   -  person Jonathan Sterling    schedule 06.06.2011
comment
возможный дубликат Как нарисовать прозрачный UIToolbar или UINavigationBar в iOS7   -  person Gabriele Petronella    schedule 27.06.2014


Ответы (6)


Вы можете установить свойство translucent на YES и посмотреть, поможет ли это.

person Luke    schedule 06.06.2011
comment
Я думаю, нам нужно установить свойство да - person er.mobileapp; 06.06.2011
comment
Отредактировано :) Было всего лишь предположение, раньше я не работал напрямую с панелью инструментов. - person Luke; 06.06.2011
comment
У меня это не работает. Цвет фона UIToolbar теперь черный, прозрачный. Но мне нужен чистый цвет. - person Bharathi; 22.02.2012
comment
См. Комментарий, соответствующий ответу Дэвида Х. - person Luke; 22.02.2012
comment
Примечание: если панель инструментов добавлена ​​в сцену, на нее не ссылается self.navigationController.toolbar - это панель по умолчанию, которой владеет navigationController (см. stackoverflow.com/a/8753847/481207). - person Matt; 09.12.2014

Установка для свойства 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];
person jd.    schedule 13.12.2012

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

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

Взято из

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

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

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

Прозрачный UIToolBar

person Jhaliya - Praveen Sharma    schedule 06.06.2011

for (UIView * sv in [toolBar subviews])
{
     [sv removeFromSuperview];
}

;) любые iOs

person Kappe    schedule 26.10.2012

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

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

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];
person Andreas Ley    schedule 21.08.2012

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

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

[self.toolBar setBackgroundImage:blank forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
person david72    schedule 07.04.2014
comment
Граница все еще отображается. Есть ли исправление? - person Yevgeni; 28.04.2014