我正在嘗試爲應用程序加載配置文件圖像,但我想爲其添加一個白色邊框,並在顯示它之前將其設置爲圓形。爲了做到這一點,我在UIImageView上設置了圖像屬性,然後通過設置適當的圓角半徑來準備圖像,將其掩蓋到邊界,然後添加白色邊框子圖層。最初,我是通過異步加載圖像的,並且一切正常,因爲圖像出現在視圖出現後。但是,當我緩存圖像並嘗試在imageView顯示在屏幕上之前做好準備時,我無法顯示邊框子圖層。它仍然掩蓋得很好,只是沒有邊界。下面是我用來準備圖像的代碼。子圖層不可見,除非在viewDidAppear之後添加
- (void)prepareProfileImage
{
CALayer *imageLayer = self.profileImageView.layer;
imageLayer.borderColor = [UIColor whiteColor].CGColor;
imageLayer.allowsEdgeAntialiasing = NO;
[imageLayer setCornerRadius:PROFILE_IMAGE_DIAMETER/2.0];
[imageLayer setMasksToBounds:YES];
CALayer *borderLayer = [CALayer layer];
CGRect borderFrame = CGRectMake(-1.0, -1.0, (self.profileImageView.frame.size.width+2.0), (self.profileImageView.frame.size.height+2.0));
[borderLayer setBackgroundColor:[[UIColor whiteColor] CGColor]];
[borderLayer setFrame:borderFrame];
[borderLayer setCornerRadius:PROFILE_IMAGE_DIAMETER/2.0];
[borderLayer setBorderWidth:PROFILE_IMAGE_BORDER_WIDTH+1.0];
[borderLayer setBorderColor:[UIColor whiteColor].CGColor];
[imageLayer addSublayer:borderLayer];
}
這種方法,只要它的viewDidLoad後調用工作正常,但如果viewDidLoad中調用之前將不添加邊框層。我已經確認self.profileImageView已在此方法調用時分配,但我只能看到圓形圖像,沒有邊框。
有什麼我誤解CALayers的?當我將圖層作爲子圖層添加時,它應該是否重要?
我沒有直接在圖像圖層上使用border屬性的原因是它會在外面留下一些很不愉快的圖像。