わかりました、すでに受け入れられた答えがありますが、それを行うためのより良い方法があると思います.ビューより少し大きい新しいレイヤーを作成し、ビューのレイヤーの境界にマスクしないでください(実際にはデフォルトの動作)。サンプルコードは次のとおりです。
CALayer * externalBorder = [CALayer layer];
externalBorder.frame = CGRectMake(-1, -1, myView.frame.size.width+2, myView.frame.size.height+2);
externalBorder.borderColor = [UIColor blackColor].CGColor;
externalBorder.borderWidth = 1.0;
[myView.layer addSublayer:externalBorder];
myView.layer.masksToBounds = NO;
もちろん、これは、境界線を 1 単位の大きさにしたい場合です。さらに必要な場合はborderWidth
、それに応じてレイヤーのフレームとフレームを調整します。CALayer
これは、が よりも軽くUIView
、 のフレームを変更する必要がないため、少し大きい 2 番目のビューを使用するよりも優れmyView
ていますmyView
。UIImageView
NB :私にとって、結果はシミュレーターでは完璧ではありませんでした (レイヤーが正確な位置になかったため、レイヤーの片側が厚い場合がありました) が、実際のデバイスで要求されたものとまったく同じでした。
編集
実際、私がNBで話している問題は、シミュレーターの画面を縮小したためであり、通常のサイズではまったく問題ありません。
それが役に立てば幸い