Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 试图给UILabel一个阴影,但它赢了';我没有出现_Ios_Objective C_Ios6_Uiview_Uilabel - Fatal编程技术网

Ios 试图给UILabel一个阴影,但它赢了';我没有出现

Ios 试图给UILabel一个阴影,但它赢了';我没有出现,ios,objective-c,ios6,uiview,uilabel,Ios,Objective C,Ios6,Uiview,Uilabel,我试图在我的应用程序中的一个类中为标签添加阴影,但它根本不起作用。什么也没出现。我做错了什么 // Set label properties titleLabel.font = [UIFont boldSystemFontOfSize:TITLE_FONT_SIZE]; titleLabel.adjustsFontSizeToFitWidth = NO; titleLabel.opaque = YES; titleLabel.backgroundColor = [UIColor clearCol

我试图在我的应用程序中的一个类中为标签添加阴影,但它根本不起作用。什么也没出现。我做错了什么

// Set label properties
titleLabel.font = [UIFont boldSystemFontOfSize:TITLE_FONT_SIZE];
titleLabel.adjustsFontSizeToFitWidth = NO;
titleLabel.opaque = YES;
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textColor = titleLabelColor;
titleLabel.shadowColor = [UIColor blackColor];
titleLabel.shadowOffset = CGSizeMake(10, 10);

它只是白色的,没有阴影。

只需确保您分配了UILabel,并为标签设置了一个框架。并确保该视图已添加到子视图中。大概是这样的:

    titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 30)];
    titleLabel.font = [UIFont boldSystemFontOfSize:14];
    titleLabel.adjustsFontSizeToFitWidth = NO;
    titleLabel.opaque = YES;
    titleLabel.text = @"My Label";
    titleLabel.backgroundColor = [UIColor clearColor];
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.shadowColor = [UIColor blackColor];
    titleLabel.shadowOffset = CGSizeMake(5, 5);
    [myView addSubview:titleLabel];
    [titleLabel release];
[self.titleLabel  setBackgroundShadow:[UIColor grayColor] CGSize:CGSizeMake(0, 5) shadowOpacity:1 shadowRadius:5.0];

阴影偏移的值10相当大。您可以根据需要调整值。

在将标题标签添加到self.view之前,只需将此行添加到

 titleLabel.layer.masksToBounds = NO;

祝你好运

我希望您了解类别

创建类别将是更好的选择:

Command+N>Objective-C Category>Category=Animation&Category on=UIView
这将创建两个名为
UIView+Animation.h
UIView+Animation.m

UIView+Animation.h
文件

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

@interface UIView (Animation)
- (void)setBackgroundShadow:(UIColor *)shadowColor CGSize:(CGSize)CGSize shadowOpacity:(float)shadowOpacity shadowRadius:(float)shadowRadius;
@end
#import "UIView+Animation.h"

@implementation UIView (Animation)
- (void)setBackgroundShadow:(UIColor *)shadowColor CGSize:(CGSize)CGSize shadowOpacity:(float)shadowOpacity shadowRadius:(float)shadowRadius
{
    self.layer.shadowColor = shadowColor.CGColor;
    self.layer.shadowOffset = CGSize;
    self.layer.shadowOpacity = shadowOpacity;
    self.layer.shadowRadius = shadowRadius;
    self.clipsToBounds = NO;
}
在任何
viewController
中导入
UIView+Animation.h
,并如下调用:

    titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 30)];
    titleLabel.font = [UIFont boldSystemFontOfSize:14];
    titleLabel.adjustsFontSizeToFitWidth = NO;
    titleLabel.opaque = YES;
    titleLabel.text = @"My Label";
    titleLabel.backgroundColor = [UIColor clearColor];
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.shadowColor = [UIColor blackColor];
    titleLabel.shadowOffset = CGSizeMake(5, 5);
    [myView addSubview:titleLabel];
    [titleLabel release];
[self.titleLabel  setBackgroundShadow:[UIColor grayColor] CGSize:CGSizeMake(0, 5) shadowOpacity:1 shadowRadius:5.0];

我不知道这是否有帮助,但是
不透明
应该是
。另外,这是一个相当大的
阴影偏移量
。那么
clipsToBounds
属性呢?你确定你的标题标签颜色不是背景色吗?另外,我认为偏移量10,10太大了,你的阴影可能超出了视界。尝试将其设置为1和-1的(任意)组合阴影将应用于
UILabel
的文本,当您将其应用于
时,这是可能的,在项目中添加
QuartzCore
框架,并在
UILabel
层上应用阴影。显示用于创建标签和设置标签文本的所有代码。确保指定的标签高度和阴影偏移量不相同。如果是这样的话,您将永远看不到阴影,因为它将超出边界。我将第二个方法参数的名称更改为shadowOffset。一个小的调整,但我发现代码更可读的方式。另外,它避免使用与iOS类型冲突的参数名。这对我不适用。我正在以编程方式创建一个按钮,在将其添加到视图之前,我正在调用button.titleLabel?.layer.masksToBounds=false,但我的阴影仍然会在底部被裁剪。