关于 layer.mask = label.layer 出现空白情况

源代码如下:

self.numLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width/3, 60)];

[self.view addSubview:self.numLabel];

self.numLabel.center = self.view.center;

self.numLabel.textAlignment = NSTextAlignmentCenter;

self.numLabel.font = [UIFont systemFontOfSize:30];

self.numLabel.text = @"53695";

 

 

//  创建 CAGradientLayer 对象

CAGradientLayer *gradientLayer = [CAGradientLayer layer];

//  设置 gradientLayer 的 Frame

gradientLayer.frame = CGRectMake(CGRectGetMinX(self.numLabel.frame), CGRectGetMinY(self.numLabel.frame), self.view.frame.size.width/3, 60);

//  创建渐变色数组,需要转换为CGColor颜色

UIColor * red = [UIColor colorWithRed:253/255.0 green:93/255.0 blue:97/255.0 alpha:1.0];

gradientLayer.colors = @[(id)[red colorWithAlphaComponent:0.3].CGColor,

(id)red.CGColor

];

//  设置二种颜色变化点,取值范围 0.0~1.0

gradientLayer.locations = @[@(0.0),@(1.0)];

//  设置渐变颜色方向,左上点为(0,0), 右下点为(1,1)

gradientLayer.startPoint = CGPointMake(0, 0);

gradientLayer.endPoint = CGPointMake(1, 0);

// 切成 填充 图形的形状.

[self.view.layer addSublayer:gradientLayer];

gradientLayer.mask = self.numLabel.layer;

 

这样运行之后会出现空白 label  不见了

这是因为:

1.mask,遮盖的结果是:在被mask的对象上留下mask对象非空白的部分(被mask对象.mask=mask对象;)

这个效果常常配合CAGradientLayer使用做出变色字,也就是动态的上面的效果;

2.mask的核心思想在于:mask对象在这行代码(被mask对象.mask=mask对象;)执行完之后坐标系发生的改变,被假设性的放置在了被mask对象上面,并且frame没有相应的变化,所以导致了用外部的layer直接裁剪会出现空白的情况,当然如果是子layer裁剪那么就一点问题没有;因此,需要在(被mask对象.mask=mask对象;)之后追加一个控制mask对象frame的语句,给它一个位置。(需要注意:mask对象其实是被从自己曾今的父视图或者父layer上被移除了,而且也没到被mask的那个layer上去)。

转载于:https://www.cnblogs.com/dingzhijie/p/7541778.html

column_name = ["label"] column_name.extend(["pixel%d" % i for i in range(32 * 32 * 3)]) dataset = pd.read_csv('cifar_train.csv') #dataset = pd.read_csv('heart.csv') #dataset = pd.read_csv('iris.csuv') #sns.pairplot(dataset.iloc[:, 1:6]) #plt.show() #print(dataset.head()) #shuffled_data = dataset.sample(frac=1) #dataset=shuffled_data #index=[0,1,2,3,4,5,6,7,8,9,10,11,12,13] #dataset.columns=index dataset2=pd.read_csv('test.csv') #X = dataset.iloc[:, :30].values #y = dataset.iloc[:,30].values mm = MinMaxScaler() from sklearn.model_selection import train_test_split #X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0) X_train =dataset.iloc[:,1:].values X_test = dataset2.iloc[:,1:].values y_train = dataset.iloc[:,0].values y_test = dataset2.iloc[:,0].values print(y_train) # 进行独热编码 def one_hot_encode_object_array(arr): # 去重获取全部的类别 uniques, ids = np.unique(arr, return_inverse=True) # 返回热编码的结果 return tf.keras.utils.to_categorical(ids, len(uniques)) #train_y_ohe=y_train #test_y_ohe=y_test # 训练集热编码 train_y_ohe = one_hot_encode_object_array(y_train) # 测试集热编码 test_y_ohe = one_hot_encode_object_array(y_test) # 利用sequential方式构建模型 from keras import backend as K def swish(x, beta=1.0): return x * K.sigmoid(beta * x) from keras import regularizers model = tf.keras.models.Sequential([ # 隐藏层1,激活函数是relu,输入大小有input_shape指定 tf.keras.layers.InputLayer(input_shape=(3072,)), # lambda(hanshu, output_shape=None, mask=None, arguments=None), #tf.keras.layers.Lambda(hanshu, output_shape=None, mask=None, arguments=None), tf.keras.layers.Dense(500, activation="relu"), # 隐藏层2,激活函数是relu tf.keras.layers.Dense(500, activation="relu"), # 输出层 tf.keras.layers.Dense(10, activation="softmax") ])
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值