[iOS] Background appearing outside of border when using border radius
还没有人认领这个 Issue。
- 主要语言
- C++
- 星标
- 127k
- 派生
- 25.3k
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 4
描述
Note: I already created an issue for expo https://github.com/expo/expo/issues/39711. On request of intergalacticspacehighway I am creating an issue here so it can be fixed in react native.
Description
Add view with border and border radius where the border color is the background color. Then the border will have a outline / glass like effect on iOS but not on web. I am not sure if this is a bug in expo or rather in react native.
I stumbled on this because I use a border like this to put a text badge on an icon and use the border on the text to make it have a nice offest on the icon like here:
Steps to reproduce
Add view with border and border radius where the border color is the background color:
<View
style={{
width: 50,
height: 50,
backgroundColor: 'red',
borderStyle: 'solid',
borderWidth: 10,
borderColor: 'white',
borderRadius: 25,
}}
></View>
Then the border will have a outline / glass like effect on iOS but not on web. I am not sure if this is a bug in expo or rather in react native.
React Native Version
0.81.4
Affected Platforms
Runtime - iOS
Output of npx @react-native-community/cli info
System:
OS: macOS 26.0
CPU: (10) arm64 Apple M1 Max
Memory: 8.64 GB / 64.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.12.0
path: ~/.nvm/versions/node/v22.12.0/bin/node
Yarn:
version: 4.8.1
path: ~/.nvm/versions/node/v22.12.0/bin/yarn
npm:
version: 10.9.0
path: ~/.nvm/versions/node/v22.12.0/bin/npm
Watchman:
version: 2024.11.25.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.15.2
path: /Users/dennis/.asdf/shims/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.0
- iOS 26.0
- macOS 26.0
- tvOS 26.0
- visionOS 26.0
- watchOS 26.0
Android SDK:
API Levels:
- "28"
- "30"
- "31"
- "32"
- "33"
- "34"
- "35"
- "36"
Build Tools:
- 28.0.3
- 29.0.2
- 30.0.2
- 30.0.3
- 32.0.0
- 33.0.0
- 33.0.1
- 34.0.0
- 35.0.0
- 36.0.0
System Images:
- android-30 | Google Play ARM 64 v8a
- android-32 | Google APIs ARM 64 v8a
- android-32 | Google Play ARM 64 v8a
- android-33 | Google APIs ARM 64 v8a
- android-33 | Google Play ARM 64 v8a
- android-34 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2024.2 AI-242.23339.11.2421.12483815
Xcode:
version: 26.0/17A324
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.14
path: /usr/bin/javac
Ruby:
version: 3.1.4
path: /Users/dennis/.asdf/shims/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.81.4
wanted: 0.81.4
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: Not found
newArchEnabled: Not found
iOS:
hermesEnabled: Not found
newArchEnabled: Not found
Stacktrace or Logs
No crash
MANDATORY Reproducer
https://github.com/denniske/expo-border-glass-repro
Screenshots and Videos
Web:
iOS:
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 github.com/denniske/expo-border-glass-repro 中的必需 reproducer 开始,并使用包含 borderWidth、borderColor、borderRadius 和 backgroundColor 的 View 样式。在 React Native 0.81.4 上比较 iOS 和 Web 的渲染;当 iOS 边框不再在圆角边框外显示不需要的玻璃状轮廓时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- ios, react-native
- 领域
- mobile
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 42/100