私はUIImageViewフレーム(0,0,100,30) .that imageViewに画像が割り当てられていると言うことができます。UIViewのサブフレームを非表示にする方法は?
画像の一部のみを表示する最も簡単な方法は何ですか?
たとえば、ポイント30-60(幅)と0-30(高さ)に表示されるもののみ。つまり、画像の左右の端を隠す必要があります。
私はビューを移動したり、サイズを変更する必要はありません、私はちょうどそのフレームのsubrectを隠したいと思います。
私はUIImageViewフレーム(0,0,100,30) .that imageViewに画像が割り当てられていると言うことができます。UIViewのサブフレームを非表示にする方法は?
画像の一部のみを表示する最も簡単な方法は何ですか?
たとえば、ポイント30-60(幅)と0-30(高さ)に表示されるもののみ。つまり、画像の左右の端を隠す必要があります。
私はビューを移動したり、サイズを変更する必要はありません、私はちょうどそのフレームのsubrectを隠したいと思います。
いつでもマスクを設定できます。あなたも、複雑なマスクのCAShapeLayer
を使用して、いくつかの本当にクールなものを行うことができるように
CALayer *maskLayer = [CALayer layer];
maskLayer.backgroundColor = [UIColor blackColor].CGColor;
maskLayer.frame = CGRectmake(30.0, 0.0, 30.0, 30.0);
view.layer.mask = maskLayer;
マスクは、層のいずれかのタイプにすることができます。
私は画像をマスクするのが最良の選択だと考えています。しかし、回転、変形、アニメーション化、または透明な背景が必要な場合は、次のようなことができます。
表示する画像のサイズであるサブビューを作成します。それが本当にclipsToBounds
を持っていることを確認し、それに応じて画像を配置してください。
UIView *mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
//this is the part of the image you wish to see
UIView *imageWindow = [[UIView alloc] initWithFrame:CGRectMake(30, 0, 30, 30)];
imageWindow.clipsToBounds = YES;
//your image view is the height and width of mainView and x and y is imageWindow - mainView. You can do this manually or put in calculations.
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(imageWindow.frame.origin.x - mainView.frame.origin.x, imageWindow.frame.origin.y - mainView.frame.origin.y, mainView.frame.size.width, mainView.frame.size.height)];
myImage.image = [UIImage imageNamed:@"1024x1024.png"];
[imageWindow addSubview:myImage];
[mainView addSubview:imageWindow];
[self.view addSubview:mainView];
私のコードを見ている、私はmainView
が必要だとは思わない、あなたは直接self.viewするimageWindow
を追加することができます。
このソリューションはhttps://stackoverflow.com/a/39917334/3192115
func mask(withRect rect: CGRect, inverse: Bool = false) {
let path = UIBezierPath(rect: rect)
let maskLayer = CAShapeLayer()
if inverse {
path.append(UIBezierPath(rect: self.view.bounds))
maskLayer.fillRule = kCAFillRuleEvenOdd
}
maskLayer.path = path.cgPath
imageView?.layer.mask = maskLayer
}
プロパティfillcolorの型 'のCALayer *' のオブジェクトでは見られない、私の作品、私を見つけました。私は輸入品を逃していますか? –
だから、背景色をCGColor(fillColorではない)に設定するのはやりました。 @ライアン・プールス、あなたの答えを編集し、私はそれを受け入れるでしょう。 –
ああ申し訳ありません。 'fillColor'は' CAShapeLayer'のプロパティで、私は通常マスクのシェイプレイヤーを使います。習慣の生き物。 :p –