Tôi nghĩ lý do này xảy ra được bao phủ bởi những câu trả lời cho một câu hỏi khác:
https://stackoverflow.com/a/3476424/1210490
https://stackoverflow.com/a/6528603/1210490
UIBarButtonItems hành xử khác nhau tùy thuộc vào nơi bạn lập trình đính kèm chúng. Nếu bạn đính kèm chúng vào thanh công cụ, chúng sẽ trở thành biểu tượng "nổi" màu trắng. Nếu bạn đính kèm chúng vào thanh điều hướng, chúng sẽ không.
Tôi đã dành vài giờ qua để viết một hàm để áp dụng kiểu dáng thanh công cụ UIBarButtonItem cho UIImages. Nó được viết bằng C# cho MonoTouch, nhưng tôi chắc chắn bạn sẽ có thể tinh chỉnh nó để obj-C không có problemo ...
UIImage ApplyToolbarButtonStyling(UIImage oldImage)
{
float shadowOffset = 1f;
float shadowOpacity = .54f;
RectangleF imageRect = new RectangleF(PointF.Empty, oldImage.Size);
RectangleF shadowRect = new RectangleF(new PointF(0, shadowOffset), oldImage.Size);
RectangleF newRect = RectangleF.Union(imageRect, shadowRect);
UIGraphics.BeginImageContextWithOptions(newRect.Size, false, oldImage.CurrentScale);
CGContext ctxt = UIGraphics.GetCurrentContext();
ctxt.ScaleCTM(1f, -1f);
ctxt.TranslateCTM(0, -newRect.Size.Height);
ctxt.SaveState();
ctxt.ClipToMask(shadowRect, oldImage.CGImage);
ctxt.SetFillColor(UIColor.FromWhiteAlpha(0f, shadowOpacity).CGColor);
ctxt.FillRect(shadowRect);
ctxt.RestoreState();
ctxt.ClipToMask(imageRect, oldImage.CGImage);
ctxt.SetFillColor(UIColor.FromWhiteAlpha(1f, 1f).CGColor);
ctxt.FillRect(imageRect);
UIImage newImage = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return newImage;
}
Vì vậy, một UIBarButtonItem đã từng giống như thế này:
tạo thay vì với chức năng ở trên, như thế này:
UIBarButtonItem barButtonItem = new UIBarButtonItem(ApplyToolbarButtonStyling(UIImage.FromFile("MusicIcon.png")), UIBarButtonItemStyle.Plain, delegate {});
bây giờ sẽ trông như thế này:
Hope this helps ai đó trong tương lai.
Cảm ơn bạn đã đọc.Trên thực tế, điều này có vẻ với tôi như Apple đang có một vấn đề mâu thuẫn ở đó. Tôi đã kiểm tra một số ứng dụng mặc định và một vài biểu tượng trong Thanh điều hướng có giao diện nổi (ví dụ: biểu tượng dấu cộng trong Danh sách liên hệ hoặc nút ghi trong Tin nhắn). – Chris
Gosh của tôi, cảm ơn rất nhiều vì nỗ lực phức tạp này. Đáng buồn thay, tôi không có thời gian để kết hợp điều này vào phiên bản hiện tại của sản phẩm, nhưng sẽ thử bản phát hành tiếp theo. Cảm ơn một lần nữa. – Chris